Beim Versuch, eine neue Datei mit "open (fname, 'w +')" zu öffnen, erhalte ich einen IOError. Die vollständige Fehlermeldung ist unten.
Die Datei existiert nicht, aber ich habe mit "os.access (dir_name, os.W_OK)" und "os.path.exists (dir_name)" verifiziert, dass das übergeordnete Verzeichnis für die Datei existiert.
Ich frage mich, ob der Dateiname für Windows einfach zu lang ist oder ob ich etwas falsch mache. Irgendwelche Tipps würden geschätzt. Vielen Dank.
Fehlermeldung:
IOError: [Errno 2] Keine solche Datei oder kein Verzeichnis: 'C: \ Dokumente und Einstellungen \ Administrator \ op_models \ Corp_Network_Nov12 \ abcde_corporate_nov_12.project \ abcde_corporate_nov_12-ctr.rptd.dir \ ctr \ Non Geschäftszeiten für Weeknights \ stundy_data_for_2_weeks \ 1294897740 \ json.data \ Link \ 0 \ Link Auslastung \ analysator393146160-data0.js
Hier ist ein Code, der für mich funktioniert (ich habe sehr lange Dateinamen und Pfade):
%Vor%Beachten Sie, dass es für mich nur mit einer Kombination aus allem Folgendem funktioniert:
Stellen Sie '\\? \' an der Vorderseite voran.
Verwenden Sie den vollständigen Pfad und nicht den relativen Pfad.
Verwenden Sie nur umgekehrte Schrägstriche.
In Python muss die Dateinamenszeichenfolge eine Unicode-Zeichenfolge sein, z. B. u "abc", nicht "abc".
Beachten Sie auch, dass os.walk(..)
aus irgendeinem Grund einige Verzeichnisse als Dateien zurückgab, also sehe ich oben nach.
Wenn es nicht die Länge des Dateinamens ist, ist es der Inhalt des Dateinamens ...
Python behandelt '\ 12' als Kontrollsequenz.
%Vor%Die Verwendung roher Zeichenketten für Windows-Dateinamen hilft:
%Vor%Aktualisieren
Alternativ können Sie Schrägstriche '/' anstelle von umgekehrten Schrägstrichen '\' verwenden, da diese auf allen Betriebssystemen funktionieren und Sie Ärger mit Backslashes direkt am Ende eines Pfadnamens wie in Ihren Kommentaren speichern.
Siehe auch os.path.join()
.
Update 2
Vereinfachte Demonstration des Problems:
%Vor%