logo

Modulo Shutil in Python

In questo tutorial impareremo a conoscere il modulo Shutil in Python. Discuteremo come possiamo eseguire l'operazione sui file di alto livello come creare un nuovo file di copia, archiviarlo e copiare il contenuto da un file a un altro file utilizzando lo script Python. Facciamo un'introduzione di base del modulo Shutil.

Modulo Shutil Python

Il modulo Python shutil fornisce la possibilità di eseguire operazioni sui file di alto livello. Può operare con l'oggetto file e ci offre la possibilità di copiare e rimuovere i file. Gestisce la semantica di basso livello come la creazione e la chiusura di oggetti file dopo aver eseguito tutte le operazioni.

Funzionamento del modulo Shutil

Il modulo Python Shutil viene fornito con numerosi metodi integrati. Esploreremo alcuni metodi importanti. Per iniziare a lavorare con questo modulo, dobbiamo prima importarlo nel nostro file Python corrente.

myflixer

Copia file

Questo modulo fornisce il copia() funzione che viene utilizzata per copiare un dato da un file a un altro. I file devono trovarsi nella stessa directory e il file di destinazione deve essere scrivibile. Comprendiamo la seguente sintassi.

Sintassi-

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Parametro:

Nella sintassi sopra -

  • Il primo argomento è source che mostra il percorso del file sorgente.
  • Il secondo argomento è destinazione che mostra il percorso del file di destinazione.
  • Il terzo argomento è facoltativo; il valore predefinito di questo parametro è true.
  • Restituisce una stringa che mostra il percorso del file appena creato.

Comprendiamo il seguente esempio.

Esempio -

 import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint')) 

Produzione:

 Empty Folder: [] File Copied Name: ['testcompare.py'] 

Spiegazione -

La funzione copy() accetta il nome della directory come argomento. Ecco il metadati non viene copiato, il file copiato verrà considerato come il file appena creato. Questo metodo ha anche clonato tutti i permessi del file. Una cosa da notare è che se il file di destinazione esiste già, verrà sostituito con il file di origine.

Vediamo un altro esempio.

Esempio: 2 se una destinazione è una directory

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest) 

Produzione:

 D:Python ProjectNewFilehello.txt 

Come abbiamo già detto, la funzione copy() non copia i metadati. Ma useremo il file copia2() funzione che ci permette di copiare il file compresi i suoi metadati.

Esempio - 3: gestione degli errori durante l'utilizzo del metodo di copia

 # importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.') 

Produzione:

 Source and destination represents the same file. 

La funzione copy2()

Questa funzione è simile a copia() funzione. Può anche copiare il contenuto di un file in un altro, ma l'unica differenza è che può preservare i metadati del file. Comprendiamo la seguente sintassi.

Sintassi:

 shutil.copy2(source, destination, *, follow_symlinks = True) 

Parametro:

Nella sintassi sopra -

  • Il primo argomento è source che mostra il percorso del file sorgente.
  • Il secondo argomento è destinazione che mostra il percorso del file di destinazione.
  • Il terzo argomento è facoltativo; il valore predefinito di questo parametro è true.
  • Restituisce una stringa che mostra il percorso del file appena creato.

Comprendiamo il seguente esempio.

Esempio -

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1) 

Produzione:

 os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt 

La funzione shutil.copyfile()

Questo metodo viene utilizzato per copiare il contenuto del file di origine nel file di destinazione, tranne i metadati. L'origine e la destinazione devono avere un file e il file di destinazione deve fornire l'autorizzazione di scrittura. Se è già presente un file di destinazione, verrà sostituito dal nuovo file, altrimenti crea un nuovo file.

Vediamo la seguente sintassi.

Sintassi:

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

parametri:

Nella sintassi sopra -

  • Il primo argomento è source che mostra il percorso del file sorgente.
  • Il secondo argomento è destinazione che mostra il percorso del file di destinazione.
  • Il terzo argomento è facoltativo; il valore predefinito di questo parametro è true.
  • Restituisce una stringa che mostra il percorso del file appena creato.

Comprendiamo il seguente esempio.

Esempio -

 import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1) 

Produzione:

 D:Python ProjectNewFilehi.txt 

La funzione shutil.copytree()

Questo metodo viene utilizzato per replicare la directory completa. Copia un intero albero di directory con radice all'origine nella directory di destinazione. La directory di destinazione non deve essere già presente. Vediamo la seguente sintassi.

metodo della sottostringa Java

Sintassi:

 shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False) 

parametri:

Nella sintassi sopra:

    origine -Mostra il percorso della directory di origine.mano -Mostra il percorso della directory di destinazione.collegamenti simbolici (facoltativo) -Accetta i valori booleani: Vero e Falso. Dipende da quali metadati dei collegamenti originali o dei collegamenti verranno copiati nel nuovo albero.ignora(facoltativo) -Per impostazione predefinita è None ma se viene passato il comando ignore, deve essere un chiamabile che riceve come argomenti. La directory viene visitata da copytree().funzione_copia(facoltativo) -Copy2 è il valore predefinito di questo parametro. IL copia() la funzione può essere utilizzata come parametro.ignora_dangling_symlinks(opzionale) -Questo parametro viene utilizzato per sollevare un'eccezione se il file puntato dal collegamento simbolico non esiste.
  • Restituisce la stringa che rappresenta il percorso della directory appena creata.

Esempio -

 # importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1) 

Produzione:

 Destination path: D:Python ProjectNewFolder 

Il file shutil.rmtree()

Questo metodo viene utilizzato per eliminare l'albero completo delle directory. Vediamo la seguente sintassi.

Sintassi:

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

Parametro-

Nella sintassi sopra -

    sentiero -Rappresenta il percorso del file. Un oggetto simile a un percorso è un oggetto stringa o byte.ignora_errori -La rimozione verrà ignorata se questo argomento è True.un errore -Se ignora_errori è false, tali errori vengono gestiti chiamando un gestore specificato da onerror.

Comprendiamo il seguente esempio:

Esempio -

 import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1) 

Il codice precedente rimuoverà la directory specificata.

La funzione shutil. which()

IL shutil.quale() La funzione viene utilizzata per ottenere il percorso di un'applicazione eseguibile che verrebbe eseguita se venisse chiamato il cmd specificato. Trova il file nel percorso indicato. Vediamo la seguente sintassi.

Sintassi:

 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

Parametri

maledetto sonno

Nella sintassi sopra -

    cmd-È una stringa che rappresenta il file.modalità -Specifica la modalità del file in cui il metodo deve essere eseguito.sentiero -Questo parametro specifica il percorso da utilizzare.
  • Questo metodo restituisce il percorso di un'applicazione eseguibile.

Comprendiamo il seguente esempio.

Esempio -

 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

Produzione:

 C:Pythonpython.EXE 

Troverà il file specificato nel computer, se il file viene trovato restituisce il percorso del file altrimenti restituisce Nessuno.