Come tutti sappiamo, i nomi file in Windows non possono contenere due punti. Tuttavia, mi sono imbattuto in un problema, che può essere riprodotto con il seguente codice di esempio:Colon nomi di file 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')
Questo script crea tre file nella directory ./temp
: a
, b
(con 'pippo') e word1
(vuoto) . Crea anche un file denominato file
in D:\
, che è una memoria rimovibile. Non crea nulla in C:\
, che richiede diritti di amministratore per scrivere; tuttavia, crea un file nella directory di lavoro corrente.
Non capisco tre cose:
- Perché non sono delle eccezioni generate (con altri caratteri non consentiti, ottengo IOError)?
- Perché il file
word1
è vuoto? - Perché un file viene creato nella directory di lavoro corrente?
È piuttosto tangenziale al tuo punto (che è una buona domanda), ma per favore usa 'with' quando lavori con i file. Diffondi buone pratiche! – Veedrac
''word1: word2'' memorizza nel flusso NTFS alternativo denominato'' word2''. Controllalo con 'dir/R word1'. – eryksun
''c: file'' crea un file chiamato'' file'' nella directory di lavoro corrente sull'unità C :. – eryksun