BİLGİ SAYAMIYORUM beta

Python ile bir dosyayı, dizini ya da içindeki dosyaları nasıl silebilirsiniz?

0

Python ile dosya işlemleri yapmaya başlarsanız mutlaka ihtiyaç duyacağınız bir özellik olacaktır, dosyaları silmek, dolu ya da boş dizinleri silmek. Herhangi bir dosyayı silmek için şu ikisinden birini kullanabilirsiniz:

import os
os.unlink(yol, *, dir_fd=None)
os.remove(yol, *, dir_fd=None)

Örnek olarak dosyaYolu değişkeninde bulunan bir dosyayı silmek için ilk satırı kullanabilirsiniz, direk dosyanın adresini yazarak silmek için de ikincisini:

import os
os.remove(dosyaYolu)
os.remove('/tmp/silinecek.txt')

Bir adresteki belirli bir tipteki tüm dosyaları silmek için "*" işaretini ve glob u kullanmalısınız bu ekstra bir kütüphane daha demek oluyor:

import os, glob
os.remove(glob('/tmp/dosya/*.txt'))

Bu dosyaYolu değişkenin herhangi türde bir dosyanın adresi olabilir. Ancak bu klasör yani dizin olmamalıdır, yoksa OSError hatası döner. Eğer terminalde python yazıyorsanız ve bu değişken tek bir isime aitse, o sırada içinde bulunduğunun dizindeki aynı isimdeki dosya silinir. 

Eğer boş bir dizini silmek isterseniz, şunu kullanabilirsiniz:

import os
os.rmdir("/tmp/bosDizin")

İçi dolu bir dizini silmek için de şunu kullanabilirsiniz:

import shutil
shutil.rmtree("/tmp/doluDizin")

Eğer bir dosyanın ters yönde yukarı doğru silinerek devam etmesini istiyorsanız şunu kullanabilirsiniz, bunun amacı verdiğiniz adresteki dizin isimlerinin tamamını yok etmektir. Tabii eğer her aşamada bir altta sizin ismini verdiğiniz dışında başka bir öğe yoksa:

os.removedirs("/tmp/doluDizin")

Bir dosya yolunda herhangi bir dosya mı yoksa klasör mü olduğunu anlamak için şunları kullanabilirsiniz:

os.path.isfile("/tmp/kontrolEt")
os.path.isdir("/tmp/kontrolEt")

Üstteki işlemlerle eğer dizini silme komutunu kullanıyorsanız, fark edebileceğiniz gibi bu dizinin içeriğiyle birlikte klasörün kendisini de siler. Eğer klasörü silmek istemiyorsunuz ama içindeki klasörler dahil tüm dosyaları silmek istiyorsanız şunu kullanabilirsiniz:

import os, shutil
dizin = '/tmp/silinecekler'
for dosya in os.listdir(dizin):
     dosyaYolu = os.path.join(dizin, dosya)
     try:
          if os.path.isfile(dosyaYolu):
               os.remove(dosyaYolu)
          elif os.path.isdir(dosyaYolu):
               shutil.rmtree(dosyaYolu)
     except Exception as hata:
          print(hata)

Dizinin içindeki dosyaları gezen bir for döngüsü içinde, ark edebileceğiniz gibi önceki gösterdiğim dosya mı, dizin mi kontrolünü yaptığım bir if ifadesi içeriyor. Eğer yapılacak şeyi değiştirmek isterseniz burayı kullanabilirsiniz.

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER