modulo shutil in python

modulo shutil in python
Gli oggetti di gestione e gestione dei file sono considerati uno dei compiti più difficili in tutti i linguaggi di programmazione. Alcuni linguaggi di programmazione ci forniscono alcuni strumenti che estraggono le parti difficili della gestione dei file con funzioni e interfacce facili da usare. Questo è esattamente ciò che Python shutil Anche il modulo lo fa.

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.