Python Proje Hakkında Yardım

Merhaba arkadaşlar,

bu sene üniversitede ileri düzey programlama dersinde pyhton görmeye başladık ve hoca proje yapmamızı istedi. ben de konu olarak dizin taratmayı ve oradaki resim, video, müzik verilerini çekmeyi seçtim.

buraya kadar bir sıkıntı yok. walk() komutuyla verileri çekip bir diziye aktarabiliyorum ama örneğin resimler diye bir liste oluşturdum ve oraya bilgisayardaki tüm resimleri çektim. sonra bir döngü ile dosyanın boyutunu çekmeye çalışıyorum fakat sadece içinde olduğum dizinin verilerini çekebiliyorum. örneğin sadece masaüstündeki resimleri çekiyor ama masaüstüdeki klasörlerin içindeki resimlere geldiği zaman yani listeden o isimleri çektiği zaman dosya bulunamadı diyor. bu hatayı nasıl halledebilirim? dosyaları kontrol ederken kendi dizininde nasıl bi kontrol sağlayabilirim?

Merhaba. Kodları görsek daha iyi olur ama muhtemelen listeye dosya isimlerini atarken sadece isimlerini atıyorsunuz, yollarını atmıyorsunuz. Örneğin; şöyle bir şey yapıyorsunuz:

for dirpath, dirnames, filenames in os.walk(dir):
    for filename in filenames:
        liste.append(filename)

Bunun yerine şöyle yapmanız gerek:

for dirpath, dirnames, filenames in os.walk(dir):
    for filename in filenames:
        liste.append(os.path.join(dirpath, filename))

Buradaki os.path.join metodu verilen dizin ve dosya isimlerini uygun bir şekilde birleştirir (Windows’ta \ ayracını, UNIX sistemlerinde / ayracını kullanır.). Böylece listeye dosyanın ismini değil, dosyanın yolunu ekleyerek daha sonra bu dosyaya erişebiliriz.

Not 1: Kodunuzu görmeden ancak bu kadar yardımcı olabilirim. :slight_smile:
Not 2: “Pyhton” değil “Python”; bu çok önemli. :smile:

2 Beğeni

isim konusunda özür dilerim… üzgünüm biraz kısıtlı zamanım var her şeyi hızlıca halletmeye çalışıyorum.

> os.chdir("C:\\")
> resimDosyalari=[]
> muzikDosyalari=[]
> videoDosyalari=[]
> for  kökdizin, altdizinler, dosyalar in os.walk(os.getcwd()):
>     for resimler in dosyalar:
>         if resimler.endswith(".jpg") or resimler.endswith(".png"):
>             resimDosyalari.append(resimler)
>     for muzikler in dosyalar:
>         if muzikler.endswith(".mp3"):
>             muzikDosyalari.append(muzikler)
>     for videolar in dosyalar:
>         if videolar.endswith(".mp4"):
>             videoDosyalari.append(videolar)

diyelim ki sizin dediğiniz gibi yaptım ondan sonran nasıl bir yol izlemem gerekiyor? buna alternatif olarak tüm resim dosyalarını bir klasöre kopyalamayı düşündüm. oradan gerekli verileri çektikten sonra klasörleri sildirecektim. onun için de şöyle bi yol izledim ama burada sadece belirli bir dizin içindekileri kontrol edebiliyorum yine. tek tek tüm dizinlere baktıramadım daha onunla uğraşıyordum.

kaynak = "C:\\Users\\Onur\\Desktop\\"
hedef = "C:\\Users\\Onur\\Desktop\\resimler\\"
files = os.listdir(kaynak)
files.sort()
dosya_sayisi = 0
for f in files:
    if f.endswith(".jpg"):
        dosya_sayisi += 1
        k = kaynak+f
        h = hedef+f
        shutil.copy(k,h)

Belki bu, dizin listeleme konusunda işinize yarayabilir

#coding:utf-8

import os

def listele(dizin):
    liste = os.listdir(dizin)

    for i in liste:
        print("{}\\{}".format(dizin,i))
        if(os.path.isdir(dizin+os.sep+i)):
            listele(dizin+os.sep+i)


listele("C:\\")

listeleme konusunda sıkıntım yok. her bir dosyanın boyutunu da çekebiliyorum artık onların hepsini hallettim. yalnız projeyi nasıl geliştirebilirim? neler ekleyebilirim? birkaç fikir önerisi alabilirsem güzel olabilir aslında.