Î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:
- 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 -
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 -
- 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.