Come spostare un file in Python
Ho cercato nell'interfaccia Python os
, ma non sono riuscito a trovare un metodo per spostare un file. Come potrei fare l'equivalente di $ mv ...
in Python?
>>> source_files = '/PATH/TO/FOLDER/*'
>>> destination_folder = 'PATH/TO/FOLDER'
>>> # equivalent of $ mv source_files destination_folder
800
3
os.rename()
,shutil.move()
, oos.replace()
Tutti impiegano la stessa sintassi:
Nota che devi includere il nome del file (
file.foo
) in entrambi gli argomenti sorgente e destinazione. Se viene cambiato, il file verrà rinominato e spostato. Notate anche che nei primi due casi la directory in cui viene creato il nuovo file deve già esistere. Su Windows, un file con quel nome non deve esistere o verrà sollevata un'eccezione, maos.replace()
sostituirà silenziosamente un file anche in quel caso.Come è stato notato nei commenti ad altre risposte,
shutil.move
chiama semplicementeos.rename
nella maggior parte dei casi. Tuttavia, se la destinazione è su un disco diverso da quello di origine, invece copierà e poi cancellerà il file di origine.Anche se
os.rename()
eshutil.move()
rinominano entrambi i file, il comando che più si avvicina al comando mv di Unix èshutil.move()
. La differenza è cheos.rename()
non funziona se la sorgente e la destinazione sono su dischi diversi, mentreshutil.move()
non si preoccupa del disco su cui si trovano i file.Per os.rename o shutil.move è necessario importare il modulo. Nessun carattere * è necessario per ottenere tutti i file spostati.
Abbiamo una cartella in /opt/awesome chiamata source con un file chiamato awesome.txt.
Abbiamo usato os.listdir per vedere che il nome della cartella è effettivamente cambiato. Ecco lo shutil che sposta la destinazione di nuovo all'origine.
Questa volta ho controllato nella cartella source per essere sicuro che il file awesome.txt che ho creato esista. È lì :)
Ora abbiamo spostato una cartella e i suoi file da una sorgente a una destinazione e viceversa.