2013-02-20 12 views
6

Jak uzyskać wygląd Pythona i czy istnieje plik, którego potrzebuje i czy nie ma go?Jak sprawić, aby Python sprawdził, czy plik istnieje i utworzy go, jeśli nie istnieje?

Zasadniczo chcę, aby Python sprawdzał moją nazwę pliku KEEP-IMPORTANT.txt, ale kiedy tworzę aplikację przy użyciu py2app, to nie działa, ponieważ nie ma pliku. Kiedy próbuję zrobić plik, to nie będzie działać (myślę, że ponieważ Python musi go wygenerować).

Chcę, aby Python sprawdzał, czy plik istnieje, a jeśli tak, to nie generuje pliku, w przeciwnym razie nie.

+0

Co chcesz zrobić z tym plikiem? Przepisz to? Przeczytaj to? Dołącz do tego? Obie? –

+2

"Kiedy próbuję zrobić plik, to nie będzie działać (myślę, że ponieważ Python musi go wygenerować)." Prawie tak. Powinieneś dodać więcej szczegółów i pokazać odpowiedni kod, który posiadasz. –

+0

Plik musi istnieć, wszystko to – user2093174

Odpowiedz

7

Similar question

Jest to najlepszy sposób:

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

Jest też os.path.exists(), ale może to być problemem bezpieczeństwa.

+0

Podałem przykład, aby przetestować tę metodę pod kątem błędów. W python 2.7 błędy uprawnień wywołują IOError. Odwołałem dostęp do odczytu dla pliku testowego, ale zezwalałem na zapis. Próba odczytania pliku wywołała błąd IOError i mogłem go zastąpić przy użyciu tego wyjątku. To nie zadziała w pythonie 3, ponieważ odczytanie pliku spowoduje PermissionError. Prawdopodobnie jest to scenariusz niszowy, który jest mało prawdopodobny. Zastanawiam się, jakie inne sposoby może wystąpić IOError z istniejącego pliku. – Octipi

+0

Jeśli nie masz rw uprawnień do pliku, nie będziesz próbował go odrzucić, po prostu wywołaj kolejny błąd IOError? –

+0

W pythonie 3 wywołałoby to błąd PermissionError. Przetestowałem mało prawdopodobny scenariusz, w którym masz uprawnienia do zapisu, ale nie masz uprawnień do odczytu. W tym przypadku, dla Pythona 2.7, odczytanie pliku wywołało IOError, ale nadal mogłem do niego pisać z uprawnieniami do zapisu. – Octipi

7

Ten jednokanałowy sprawdzi, czy plik istnieje, i utworzy go, jeśli nie istnieje.

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

+1 za to, że tworzy plik i nie ma błędów - ale co z usuwaniem poprzednich bitów pliku? – cutrightjm

Powiązane problemy