Wie wir alle wissen, können Dateinamen in Windows keine Doppelpunkte enthalten. aber ich lief in ein Problem, das mit dem folgenden Beispielcode reproduziert werden kann:Doppelpunkt in Dateinamen in Python
import os
os.chdir('./temp')
names = ['a', 'b', 'word1: word2', 'c: file', 'd: file']
for name in names:
with open(name, 'w') as f:
f.write('foo')
Dieses Skript drei Dateien im ./temp
Verzeichnis erstellt: a
, b
(mit ‚foo‘) und word1
(leer) . Es erstellt auch eine Datei mit dem Namen file
in D:\
, die Wechselspeicher ist. In C:\
wird nichts erstellt, für das Administratorrechte erforderlich sind. Es erstellt jedoch eine Datei im aktuellen Arbeitsverzeichnis.
Ich verstehe nicht, drei Dinge:
- Warum sind keine Ausnahmen geworfen (mit anderen Charakteren verboten, ich IOError bekommen)?
- Warum ist die
word1
Datei leer? - Warum wird eine Datei im aktuellen Arbeitsverzeichnis erstellt?
Es ist eher tangential zu Ihrem Punkt (was eine gute Frage ist), aber bitte 'mit' verwenden, wenn Sie mit Dateien arbeiten. Verbreite gute Praktiken! – Veedrac
''word1: word2'' speichert den alternativen NTFS-Stream namens' 'word2''. Überprüfen Sie dies mit 'dir/R word1'. – eryksun
'c: file' erstellt eine Datei mit dem Namen' 'file'' im aktuellen Arbeitsverzeichnis auf Laufwerk C:. – eryksun