Ich versuche, mit Python eine Textdatei zu erstellen und in diese zu schreiben. Ich habe nach einer Lösung/einem Grund für diesen Fehler gesucht und kann sie nicht finden.
Hier ist der Code, der nicht funktioniert:
afile = 'D:\\temp\\test.txt'
outFile = open(afile, 'w' )
outFile.write('Test.')
outFile.close()
# Error: 2
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'D:\\temp\\test.txt' #
Die meisten Antworten, die ich fand, bezogen sich auf die Schrägstriche im Pfad, also ...
I tried 'D:/temp/test.txt' and got an error.
I tried r'D:\temp\test.txt' and got an error.
Wenn ich versuche, eine Datei im Stammverzeichnis von D:/zu erstellen, habe ich Erfolg.
'D:/test.txt' works.
'D:\\test.txt' works.
r'D:\test.txt' works.
Es scheint, dass ich den gewünschten Verzeichnispfad beim Erstellen der Datei nicht erstellen kann. Was ist die richtige Methode zum Erstellen von Dateien unter einem bestimmten Pfad mit Python unter Windows (7)? Verstehe ich falsch, was open () tun kann? Werden Verzeichnisse erstellt, wenn sie nicht vorhanden sind oder nicht? Muss ich den Verzeichnispfad explizit erstellen, bevor ich im Schreibmodus open () zum Erstellen einer Datei verwende?
Sie vermuten zu Recht, dass das übergeordnete Verzeichnis für die Datei vorhanden sein muss, damit open
erfolgreich ist. Der einfache Weg, um damit umzugehen, besteht darin, os.makedirs
anzurufen.
Aus der Dokumentation :
os.makedirs (Pfad [ Modus])
Rekursive Verzeichniserstellungsfunktion. Wie
mkdir()
, erstellt jedoch alle Zwischenverzeichnisse, die für die Aufnahme des Blattverzeichnisses erforderlich sind.
Ihr Code könnte also ungefähr so aussehen:
filename = ...
dirname = os.path.dirname(filename)
if not os.path.exists(dirname):
os.makedirs(dirname)
with open(filename, 'w'):
...
Wenn Sie versuchen, eine Datei in einem nicht vorhandenen Verzeichnis zu erstellen, wird dieser Fehler angezeigt.
Sie müssen zuerst sicherstellen, dass das Verzeichnis vorhanden ist. Sie können dies mit os.makedirs()
gemäß diese Antwort tun.
Alternativ können Sie überprüfen, ob die Datei vorhanden ist, bevor Sie sie öffnen:
os.path.exists (afile)
Welches entweder wahr oder falsch sagt, abhängig davon, ob es existiert.