logo

Modulul Shutil în Python

În acest tutorial, vom afla despre modulul Shutil din Python. Vom discuta despre cum putem efectua operația de fișier la nivel înalt, cum ar fi crearea unui nou fișier de copiere și arhivarea acestuia și copierea conținutului unui fișier într-un alt fișier folosind scriptul Python. Să facem o introducere de bază a modulului Shutil.

Modulul Python Shutil

Modulul Python Shuil oferă facilitatea de a efectua operația de fișier la nivel înalt. Poate funcționa cu obiectul fișier și ne oferă posibilitatea de a copia și elimina fișierele. Se ocupă de semantica de nivel scăzut, cum ar fi crearea și închiderea obiectelor fișierului după efectuarea tuturor operațiunilor.

fmovies

Funcționarea Modulului Shutil

Modulul Python Shuil vine cu multe metode încorporate. Vom explora câteva metode importante. Pentru a începe să lucrăm cu acest modul, mai întâi trebuie să-l importăm în fișierul nostru actual Python.

Copiați fișierele

Acest modul oferă copie() funcție care este folosită pentru a copia date dintr-un fișier în altul. Fișierele trebuie să fie în același director și fișierul destinație trebuie să poată fi scris. Să înțelegem următoarea sintaxă.

Sintaxă-

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

Parametru:

În sintaxa de mai sus -

  • Primul argument este sursa care arată calea fișierului sursă.
  • Al doilea argument este destinația care arată calea fișierului destinație.
  • Al treilea argument este opțional; valoarea implicită a acestui parametru este adevărată.
  • Returnează un șir care arată calea fișierului nou creat.

Să înțelegem următorul exemplu.

Exemplu -

 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')) 

Ieșire:

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

Explicatie -

Funcția copy() ia numele directorului ca argument. Aici metadate nu este copiat, fișierul copiat va fi considerat fișier proaspăt creat. Această metodă a clonat, de asemenea, toate permisiunile fișierului. Un lucru de reținut este că, dacă fișierul destinație există deja, acesta va fi înlocuit cu fișierul sursă.

Să vedem un alt exemplu.

Exemplu - 2 dacă o destinație este un director

 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) 

Ieșire:

 D:Python ProjectNewFilehello.txt 

După cum am menționat că, funcția copy() nu copiază metadatele. Dar, vom folosi copy2() funcție care ne permite să copiem fișierul, inclusiv metadatele acestuia.

Exemplu - 3: Tratarea erorilor în timpul utilizării metodei de copiere

 # 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.') 

Ieșire:

 Source and destination represents the same file. 

Funcția copy2().

Această funcție este similară cu cea copie() funcţie. De asemenea, poate copia conținutul unui fișier în altul, dar singura diferență este că poate păstra metadatele fișierului. Să înțelegem următoarea sintaxă.

Sintaxă:

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

Parametru:

În sintaxa de mai sus -

  • Primul argument este sursa care arată calea fișierului sursă.
  • Al doilea argument este destinația care arată calea fișierului destinație.
  • Al treilea argument este opțional; valoarea implicită a acestui parametru este adevărată.
  • Returnează un șir care arată calea fișierului nou creat.

Să înțelegem următorul exemplu.

Exemplu -

 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) 

Ieșire:

 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 

Funcția shutil.copyfile().

Această metodă este folosită pentru a copia conținutul fișierului sursă în fișierul destinație, așteptați metadatele. Sursa și destinația trebuie să aibă un fișier, iar fișierul destinație trebuie să ofere permisiunea de scriere. Dacă există deja un fișier destinație, acesta va fi înlocuit cu noul fișier, altfel creați un fișier nou.

Să vedem următoarea sintaxă.

Sintaxă:

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

Parametri:

În sintaxa de mai sus -

  • Primul argument este sursa care arată calea fișierului sursă.
  • Al doilea argument este destinația care arată calea fișierului destinație.
  • Al treilea argument este opțional; valoarea implicită a acestui parametru este adevărată.
  • Returnează un șir care arată calea fișierului nou creat.

Să înțelegem următorul exemplu.

Exemplu -

 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) 

Ieșire:

 D:Python ProjectNewFilehi.txt 

Funcția shutil.copytree().

Această metodă este folosită pentru a replica directorul complet. Copiază un întreg arbore de directoare cu rădăcină la sursă în directorul de destinație. Directorul de destinație nu trebuie să fie deja prezent. Să vedem următoarea sintaxă.

Sintaxă:

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

Parametri:

În sintaxa de mai sus:

    src -Acesta arată calea directorului sursă.mână -Acesta arată calea directorului de destinație.legături simbolice (opțional) -Este nevoie de valorile booleene - Adevărat și Fals. Depinde de care metadatele link-urilor sau link-urilor originale vor fi copiate în noul arbore.ignora (opțional) -În mod implicit, este Nimic, dar dacă ignorarea este trecută, trebuie să fie un apelabil care primește drept argumente. Directorul este vizitat de copytree().copy_function (opțional) -Copy2 este valoarea implicită a acestui parametru. The copie() funcția poate fi folosită ca parametru.ignore_dangling_symlinks (opțional) -Acest parametru este folosit pentru a ridica excepția dacă fișierul indicat de linkul simbolic nu există.
  • Returnează șirul care reprezintă calea directorului nou creat.

Exemplu -

 # 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) 

Ieșire:

 Destination path: D:Python ProjectNewFolder 

Shuil.rmtree()

Această metodă este folosită pentru a șterge arborele complet de directoare. Să vedem următoarea sintaxă.

Sintaxă:

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

Parametru-

În sintaxa de mai sus -

    cale -Reprezintă calea fișierului. Un obiect asemănător căii este fie un șir, fie un obiect de octeți.ignore_errors -Eliminarea va fi ignorată dacă acest argument este adevărat.onerror -Dacă ignore_errors este fals, astfel de erori sunt tratate prin apelarea unui handler specificat de onerror.

Să înțelegem următorul exemplu -

Exemplu -

 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) 

Codul de mai sus va elimina directorul dat.

Funcția shutil.which().

The shutil.care() funcția este utilizată pentru a obține calea unei aplicații executabile care ar fi rulată dacă ar fi apelat cmd-ul dat. Găsește fișierul în calea dată. Să vedem următoarea sintaxă.

Sintaxă:

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

Parametrii

În sintaxa de mai sus -

    cmd -Este șirul care reprezintă fișierul.modul -Specifică modul de fișier în care metoda ar trebui să fie executată.cale -Acest parametru specifică calea care trebuie utilizată.
  • Această metodă returnează calea către o aplicație executabilă.

Să înțelegem următorul exemplu.

Exemplu -

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

Ieșire:

 C:Pythonpython.EXE 

Acesta va găsi fișierul dat în computer, dacă fișierul este găsit, returnează calea fișierului, altfel returnează Nimic.