Python Shutil
Il modulo Python Shutil consente a uno sviluppatore di utilizzare gli oggetti di file molto facilmente e senza approfondire i dettagli su come funzionano le cose sotto le copertine. Questo modulo fondamentalmente estrae la semantica di basso livello della creazione e gestione degli oggetti di file, pulirli una volta che l'uso è completo e ci consente di concentrarci sulla logica aziendale dell'applicazione. Vedremo molti esempi qui, iniziamo.
Esempi con modulo shutil Python
Studieremo vari esempi che dimostrano l'uso di Python shutil modulo qui.
Copia di un file
Con il copia il file() funzione in shutil Modulo, possiamo creare una copia esatta di un file esistente ovunque sulla macchina. Diamo un'occhiata a un programma di esempio per dimostrare come questo può essere fatto:
Import OS
Shutil di importazione
file_directory = './File'
Print ('Files Before:', OS.listDir (file_directory))
shutil.copia il file('./Files/ciao.TXT', './Files/hello_again.TXT')
Print ('Files After:', OS.listDir (file_directory))
Abbiamo appena copiato un file che esiste nella directory data per clonare il file nella stessa directory. Ecco cosa torniamo con questo comando:
Python Shutil File Copia
La cosa buona di questa funzione è che la funzione menzionata prende anche come input il nome al nuovo file da creare.
Copia di file in un'altra directory
È possibile copiare un file in una nuova directory con shutil copia() funzione. Guardiamolo in azione:
Import OS
Shutil di importazione
Stampa ('Making una nuova directory.')
sistema operativo.MKDIR ('LinuxHint')
Print ('Files Before:', OS.listDir ('LinuxHint'))
shutil.copia('./Files/ciao.txt ',' Linuxhint ')
Print ('Files After:', OS.listDir ('LinuxHint'))
Vediamo l'output per questo comando:
Copia del file in una nuova directory
Si noti che quando un file viene copiato usando il copia() funzione, Le autorizzazioni per il file sono anche clonate Ma i metadati del file non vengono copiati. Ciò significa che quando controlli quando è stato realizzato questo file, mostrerà il tempo fresco quando hai eseguito questo script.
Copia del file con metadati
Nell'ultima sezione, abbiamo visto come potremmo fare una copia del file. Cosa succede se si desidera creare un clone esatto di un file che prevede la clonazione dei suoi metadati, come quando è stato realizzato il file ecc. Anche questo è possibile ma questo potrebbe non funzionare su un sistema basato su posix. Vediamo un esempio su come questo può essere fatto:
Import OS
Shutil di importazione
tempo di importazione
new_directory = 'LinuxHint'
src_file = './Files/ciao.TXT'
dest_file = './Linuxhint/Hello.TXT'
def file_metadata (file):
STAT_INFO = OS.stat (file)
print ('modalità:', ott (stat_info.st_mode))
print ('creato:', time.ctime (stat_info.st_ctime))
Stampa ('Accesso:', Time.ctime (stat_info.st_atime))
print ('modificato:', tempo.ctime (stat_info.st_mtime))
sistema operativo.mkdir (new_directory)
print ('metadata per file di origine:')
file_metadata (src_file)
shutil.Copy2 (src_file, new_directory)
print ('metadata per file di destinazione:')
file_metadata (dest_file)
Ecco cosa torniamo con questo comando quando lo eseguiamo su un sistema basato su Posix (i metadati non sono completamente clonati):
Copia file con metadati
Sui sistemi non basati su Posix, anche il tempo creato e accessibile si sarebbe abbinato esattamente.
Clonazione di directory completa
Nell'ultima sezione, abbiamo visto come potremmo fare una copia del file. Qui vedremo come possiamo clonare una directory completa in modo ricorsivo. Ciò significa che se esiste un'altra directory nella directory vogliamo clonare, anche quelli saranno clonati.
importare pprint
Shutil di importazione
Import OS
src_directory = './File'
dest_directory = './Linuxhint '
shutil.Copytree (SRC_Directory, Dest_Directory)
print ('Contenuto della fonte:')
pprint.pprint (sistema operativo.ListDir (src_directory))
print ('Contenuto della destinazione:')
pprint.pprint (sistema operativo.ListDir (dest_directory))
Vediamo l'output per questo comando:
Duplicando una directory
Si noti che la directory che passiamo alla funzione CopyTree () La directory di destinazione non deve esistere prima di eseguire questo programma.
Eliminazione di una directory
Eliminare una directory è molto semplice con il rmtree () funzione nel modulo. Vediamo questa funzione in azione qui:
importare pprint
Shutil di importazione
Import OS
delete_directory = 'linuxhint'
current_directory = '.'
Stampa ('Contenuto prima della rimozione:')
pprint.pprint (sistema operativo.listDir (current_directory))
shutil.rmtree (delete_directory)
print ('contenuto dopo rimozione:')
pprint.pprint (sistema operativo.listDir (current_directory))
Dopo aver eseguito lo script, Linuxhint La directory viene eliminata insieme al contenuto. Ecco cosa torniamo con questo comando:
Elimina la directory
Trovare file
Se si desidera trovare un file presente sulla variabile del percorso sulla macchina, possiamo usare il Quale() funzione per trovare quel file per nome. Diamo un'occhiata a un esempio dimostrativo per questa funzione:
Shutil di importazione
Stampa (shutil.che ("bsondump"))
Stampa (shutil.Quale ("no-file-found"))
Ecco cosa torniamo con questo comando:
Trova file sul percorso
Monitoraggio dello spazio del sistema file
Con il modulo Shutil, abbiamo una funzione Disk_Usage () attraverso la quale possiamo ottenere anche informazioni sullo spazio su disco sulla nostra macchina. Diamo un'occhiata a un esempio che mostra questi dati in modo leggibile dall'uomo:
Shutil di importazione
total_b, usate_b, free_b = shutil.uso del disco('.')
GB = 10 ** 9 # GB == Gigabyte
print ('totale: : 6.2f gb '.Formato (totale_b / gb))
print ('usate: : 6.2f gb '.Formato (usato_b / gb))
print ('gratis: : 6.2f gb '.Formato (FREE_B / GB))
Ecco cosa torniamo con questo comando:
Trovare lo spazio del file system
Directory di archiviazione
Come ultimo esempio, vedremo come possiamo archiviare un modulo Shutyl Directory make_archive () funzione. Diamo un'occhiata al programma di esempio:
Shutil di importazione
Import OS
archive_directory = \
sistema operativo.sentiero.Expantar (sistema operativo.sentiero.join ('destinazione-directory-path', 'linuxhint'))
root_dir = os.sentiero.Expantar (sistema operativo.sentiero.Unisciti ('~', '.ssh '))
shutil.make_archive (archive_directory, 'gztar', root_dir)
Ecco cosa torniamo con questo comando:
Directory di archiviazione
Se non archivi il file TAR e dai un'occhiata, conterrà tutto il .ssh file di directory in esso.
Conclusione
In questa lezione, abbiamo esaminato come gestire facilmente gli oggetti di file con operazioni di file di alto livello shutil Modulo in Python. Operazioni come la copia del contenuto di un file, creare una nuova copia di un file ecc. Sembrava facile con questo modulo.