So che se voglio copiare un file in Python, ma non sovrascrive la destinazione è possibile utilizzare il codice come questo:Copiare un file, ma non sovrascrivere senza problemi TOCTTOU in Python
if os.path.exists(dest):
raise Exception("Destination file exists!")
else:
shutil.copy2(src, dest)
Ma lo stato del mondo potrebbe cambiare tra il tempo che io chiamo os.path.exists
e l'ora che chiamo copy2
. Esiste un modo più preferito di copiare senza sovrascrivere, presumibilmente in cui l'operazione di copia genererà un'eccezione se la destinazione esiste già?
'os.fdopen (fd)', forse? – Zizouz212
Usare 'shutil.copyfileobj (sf, f)' sarebbe preferibile a 'f.write (sf.read())' dato che non leggerebbe l'intero file nella memoria –
Grazie a entrambi! Ho fatto quei cambiamenti. – Misandrist