2013-02-20 7 views
6

Python'un ihtiyacı olan bir dosya olup olmadığını ve oluşturulmadığını nasıl görebilirsiniz?Python'un bir dosya olup olmadığını nasıl kontrol edip etmediği nasıl oluşturulur?

Temel olarak, Python'un dosya adı KEEP-IMPORTANT.txt'u aramasını istiyorum, ancak py2app numaralı telefonumu kullanarak uygulamanızı oluşturduğumda, dosyanın olmaması nedeniyle çalışmaz. Dosyayı çalıştırmayı denediğimde işe yaramayacak (bence python onu üretmek zorunda çünkü).

Dosyanın var olup olmadığını kontrol etmek için Python'un olmasını isterim, eğer varsa, dosyayı üretmez, aksi halde olur.

+0

Dosyayla ne yapmak istersiniz? Üzerine yazılsın mı? Oku onu? Eklemek mi? Her ikisi de? –

+2

"Dosyayı çalıştırmayı denediğimde işe yaramıyor (python bunu üretmek zorunda olduğu için düşünüyorum)." Pek öyle değil. Daha fazla ayrıntı eklemeli ve ilgili kodu göstermelisiniz. –

+0

Dosya tümünün mevcut olması gerekiyor – user2093174

cevap

7

Similar question

Bu en iyi yoludur:

try: 
    with open(filename) as file: 
     # do whatever 
except IOError: 
    # generate the file 

(os.path.exists de var), ama bu bir güvenlik kaygısı olabilir.

+0

Bu yöntemi kusurlar için test etmek için bir örnek verdim. Python 2.7'de izin hataları IOError'ı yükseltiyor. Bir test dosyası için okuma erişimini iptal ettim, ancak yazmaya izin verdim. Dosyayı okumaya çalışırken bir IOError üretildi ve bu özel durumu kullanarak üzerine yazabildim. Bu dosya Python 3'te çalışmaz, çünkü dosya PermissionError değerini üretir. Bu muhtemelen gerçekleşmesi mümkün olmayan bir niş senaryo. IOError'un varolan bir dosyada başka hangi yollarla gerçekleşebileceğini merak ediyorum. – Octipi

+0

Dosya için izinlere sahip değilseniz, başka bir IOError'ı yükseltmeye çalışmayın. –

+0

Python 3'te PermissionError yükseltir. Yazma izinleri aldığınız, ancak izinleri okumadığınız olasılığını test ettim. Bu durumda, python 2.7 için, dosyayı okumak IOError'ı kaldırdı, ancak yazma izinleriyle yazabiliyordum. – Octipi

7

Bu tek liner, dosyanın var olup olmadığını kontrol edecek ve yoksa, oluşturup oluşturmayacaktır.

open("KEEP-IMPORTANT.txt", "a") 
+0

+ 1'tir - ancak dosyanın önceki bitlerini silmek de ne olabilir? – cutrightjm

İlgili konular