Pitone

modulo shutil in Python

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

Python chiuso

Il modulo Python shutil consente a uno sviluppatore di utilizzare oggetti file molto facilmente e senza entrare in dettagli più approfonditi su come funzionano le cose sotto le coperte. Questo modulo fondamentalmente astrae la semantica di basso livello della creazione e della gestione degli oggetti file, pulendoli una volta completato l'uso e ci consente di concentrarci sulla logica di business dell'applicazione. Vedremo molti esempi qui, iniziamo.

Esempi con il modulo Shutil Python

Studieremo vari esempi che dimostrano l'uso di Python chiusa modulo qui.

Copiare un file

Con il copia il file() funzione in chiusa modulo, possiamo fare una copia esatta di un file esistente ovunque sulla macchina. Diamo un'occhiata a un programma di esempio per dimostrare come è possibile farlo:

importare il sistema operativo
import shutil
directory_file = './File'
print('File precedenti:', os.listdir(file_directory))
chiusa.copia il file('./File/ciao.TXT', './File/ciao_di nuovo.TXT')
print('File dopo:', os.listdir(file_directory))

Abbiamo appena copiato un file che esiste nella directory data per clonare il file nella stessa directory. Ecco cosa otteniamo indietro con questo comando:

Copia del file Shutil Python

La cosa buona di questa funzione è che la funzione menzionata prende anche come input il nome del nuovo file da creare.

Copia di file in un'altra directory

È possibile copiare un file in una nuova directory con shutil's copia() funzione. Vediamolo in azione:

importare il sistema operativo
import shutil
print('Creare una nuova directory.')
os.mkdir('LinuxHint')
print('File precedenti: ', os.listdir('LinuxHint'))
chiusa.copia('./File/ciao.txt', 'LinuxHint')
print('File dopo: ', os.listdir('LinuxHint'))

Vediamo l'output di questo comando:

Copiare il file in una nuova directory

Notare che quando un file viene copiato utilizzando il copia() funzione, anche i permessi per il file vengono clonati ma i metadati del file non vengono copiati. Ciò significa che quando controlli quando è stato creato questo file, mostrerà l'ora nuova in cui hai eseguito questo script.

Copiare file con metadati

Nell'ultima sezione, abbiamo visto come fare una copia del file. Cosa succede se si desidera creare un clone esatto di un file che comporta la clonazione anche dei suoi metadati come quando è stato creato il file ecc. Anche questo è possibile ma questo potrebbe non funzionare su un sistema basato su POSIX. Diamo un'occhiata a un esempio su come questo può essere fatto:

importare il sistema operativo
import shutil
tempo di importazione
new_directory = 'LinuxHint'
src_file = './File/ciao.TXT'
dest_file = './LinuxHint/ciao.TXT'
def file_metadata(file):
stat_info = os.statistica (file)
print('Modo :', oct(stat_info.st_mode))
print('Creato :', ora.ctime(stat_info.st_ctime))
print('Accesso:', ora.ctime(stat_info.st_atime))
print('Modificato:', ora.ctime(stat_info.st_mtime))
os.mkdir(nuova_directory)
print('Metadati per file sorgente:')
file_metadata(src_file)
chiusa.copy2(file_src, nuova_directory)
print('Metadati per il file di destinazione:')
file_metadata(dest_file)

Ecco cosa otteniamo con questo comando quando lo eseguiamo su un sistema basato su POSIX (i metadati non vengono clonati completamente):

Copia file con metadati

Sui sistemi non basati su POSIX, anche il tempo di creazione e accesso sarebbe stato esattamente uguale.

Clonazione della directory completa

Nell'ultima sezione, abbiamo visto come fare una copia del file. Qui vedremo come clonare ricorsivamente una directory completa. Ciò significa che se esiste un'altra directory nella directory che vogliamo clonare, verranno clonate anche quelle.

importa stampa
import shutil
importare il sistema operativo
directory_src = './File'
directory_destinazione = './LinuxHint'
chiusa.copytree(directory_src, directory_dest)
print('Contenuto della fonte:')
pprint.pprint(os.listdir(src_directory))
print('Contenuto della destinazione:')
pprint.pprint(os.listdir(dest_directory))

Vediamo l'output di questo comando:

Duplicazione di una directory

Nota che la directory che passiamo alla funzione copytree() come 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:

importa stampa
import shutil
importare il sistema operativo
delete_directory = 'LinuxHint'
directory_corrente = '.'
print('Contenuto prima della rimozione:')
pprint.pprint(os.listdir(current_directory))
chiusa.rmtree(delete_directory)
print('Contenuto dopo la rimozione:')
pprint.pprint(os.listdir(current_directory))

Dopo aver eseguito lo script, LinuxSuggerimento la directory viene eliminata insieme al contenuto. Ecco cosa otteniamo indietro con questo comando:

Elimina directory

Trovare file

Se vuoi trovare un file che è presente nella variabile PATH sulla tua macchina, possiamo usare il quale() funzione per trovare quel file per nome. Diamo un'occhiata a un esempio dimostrativo per questa funzione:

import shutil
print(chiudi.which('bsondump'))
print(chiudi.which('nessun-file-trovato'))

Ecco cosa otteniamo indietro con questo comando:

Trova file su PATH

Monitoraggio dello spazio del file system

Con il modulo shutil, abbiamo una funzione disk_usage() attraverso la quale possiamo ottenere informazioni sullo spazio su disco anche sulla nostra macchina. Diamo un'occhiata a un esempio che mostra questi dati in modo leggibile dall'uomo:

import shutil
b_totale, b_usato, b_libero = chiuso.uso del disco('.')
gb = 10 ** 9 # GB == gigabyte
print('Totale: :6.2f GB'.formato (totale_b / gb))
print('Usato: :6.2f GB'.formato(usato_b / gb))
print('Libero : :6.2f GB'.formato (libero_b / gb))

Ecco cosa otteniamo indietro con questo comando:

Trovare lo spazio del file system

Archiviazione directory

Come ultimo esempio, vedremo come archiviare un modulo di directory shutil make_archive() funzione. Diamo un'occhiata al programma di esempio:

import shutil
importare il sistema operativo
directory_archivio = \
os.sentiero.espandi utente(os.sentiero.join('percorso-directory-destinazione', 'linuxhint'))
root_dir = os.sentiero.espandi utente(os.sentiero.unisciti('~', '.ssh'))
chiusa.make_archive(archive_directory, 'gztar', root_dir)

Ecco cosa otteniamo indietro con questo comando:

Directory di archiviazione

Se disarchivi il file TAR e dai un'occhiata, conterrà tutte le .ssh file di directory al suo interno.

Conclusione

In questa lezione, abbiamo esaminato come possiamo gestire facilmente gli oggetti file con operazioni sui file di alto livello con chiusa modulo in Python. Operazioni come copiare il contenuto di un file, creare una nuova copia di un file ecc. sembrava facile con questo modulo.

Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...
Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...
Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...