logo

Shutil modul u Pythonu

U ovom vodiču naučit ćemo o modulu Shutil u Pythonu. Raspravljat ćemo o tome kako možemo izvesti operaciju datoteke visoke razine kao što je stvaranje nove datoteke kopije i njezino arhiviranje te kopiranje sadržaja jedne datoteke u drugu pomoću Python skripte. Predstavimo osnovni modul Shutil.

numpy točka

Python Shutil modul

Python shutil modul pruža mogućnost izvođenja operacije datoteke visoke razine. Može raditi s objektom datoteke i nudi nam mogućnost kopiranja i uklanjanja datoteka. Obrađuje semantiku niske razine kao što je stvaranje i zatvaranje objekata datoteke nakon izvođenja svih operacija.

Rad Shutil modula

Python shutil modul dolazi s mnogim ugrađenim metodama. Istražit ćemo nekoliko važnih metoda. Da bismo počeli raditi s ovim modulom, prvo ga moramo uvesti u našu trenutnu Python datoteku.

Kopiraj datoteke

Ovaj modul pruža kopirati() funkcija koja se koristi za kopiranje podataka iz jedne datoteke u drugu. Datoteke moraju biti u istom direktoriju i odredišna datoteka mora biti pisana. Razumimo sljedeću sintaksu.

Sintaksa-

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

Parametar:

U gornjoj sintaksi -

  • Prvi argument je izvor koji pokazuje putanju izvorne datoteke.
  • Drugi argument je odredište koje pokazuje putanju odredišne ​​datoteke.
  • Treći argument nije obavezan; zadana vrijednost ovog parametra je istina.
  • Vraća niz koji pokazuje putanju novostvorene datoteke.

Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

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

Objašnjenje -

Funkcija copy() uzima naziv direktorija kao argument. Ovdje je metapodaci nije kopirana, kopirana datoteka smatrat će se svježe stvorenom datotekom. Ova metoda također je klonirala sva dopuštenja datoteke. Treba napomenuti da ako odredišna datoteka već postoji, bit će zamijenjena izvornom datotekom.

Pogledajmo još jedan primjer.

Primjer - 2 ako je odredište imenik

 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) 

Izlaz:

 D:Python ProjectNewFilehello.txt 

Kao što smo spomenuli, funkcija copy() ne kopira metapodatke. Ali, mi ćemo koristiti kopiraj2() funkcija koja nam omogućuje kopiranje datoteke uključujući njezine metapodatke.

Primjer - 3: Rješavanje pogreške tijekom korištenja metode kopiranja

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

Izlaz:

 Source and destination represents the same file. 

Funkcija copy2().

Ova je funkcija slična funkciji kopirati() funkcija. Također može kopirati sadržaj jedne datoteke u drugu, ali jedina je razlika što može sačuvati metapodatke datoteke. Razumimo sljedeću sintaksu.

Sintaksa:

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

Parametar:

U gornjoj sintaksi -

  • Prvi argument je izvor koji pokazuje putanju izvorne datoteke.
  • Drugi argument je odredište koje pokazuje putanju odredišne ​​datoteke.
  • Treći argument nije obavezan; zadana vrijednost ovog parametra je istina.
  • Vraća niz koji pokazuje putanju novostvorene datoteke.

Razumimo sljedeći primjer.

Primjer -

 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) 

Izlaz:

 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 

Funkcija shutil.copyfile().

Ova se metoda koristi za kopiranje sadržaja izvorne datoteke u odredišnu datoteku očekujući metapodatke. Izvor i odredište moraju imati datoteku, a odredišna datoteka mora dati dopuštenje za pisanje. Ako već postoji odredišna datoteka, ona će biti zamijenjena novom datotekom, u suprotnom izradite novu datoteku.

što je dupla java

Pogledajmo sljedeću sintaksu.

Sintaksa:

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

Parametri:

U gornjoj sintaksi -

  • Prvi argument je izvor koji pokazuje putanju izvorne datoteke.
  • Drugi argument je odredište koje pokazuje putanju odredišne ​​datoteke.
  • Treći argument nije obavezan; zadana vrijednost ovog parametra je istina.
  • Vraća niz koji pokazuje putanju novostvorene datoteke.

Razumimo sljedeći primjer.

prebaciti java

Primjer -

 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) 

Izlaz:

 D:Python ProjectNewFilehi.txt 

Funkcija shutil.copytree().

Ova se metoda koristi za repliciranje cijelog imenika. Kopira cijelo stablo direktorija ukorijenjeno na izvoru u odredišni direktorij. Odredišni direktorij ne smije već biti prisutan. Pogledajmo sljedeću sintaksu.

Sintaksa:

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

Parametri:

U gornjoj sintaksi:

    src -Prikazuje put izvornog direktorija.ruka -Prikazuje put odredišnog direktorija.simboličke veze (izborno) -Uzima Booleove vrijednosti - True i False. Ovisi o tome koji će metapodaci izvornih veza ili veza biti kopirani u novo stablo.ignoriraj (nije obavezno) -Prema zadanim postavkama to je Ništa, ali ako je ignoriranje proslijeđeno, to mora biti poziv koji prima kao svoje argumente. Imenik posjećuje copytree().funkcija_kopiranja (izborno) -Copy2 je zadana vrijednost ovog parametra. The kopirati() funkcija se može koristiti kao parametar.ignore_dangling_symlinks(izborno) -Ovaj se parametar koristi za podizanje iznimke ako datoteka na koju ukazuje simbolička veza ne postoji.
  • Vraća niz koji predstavlja stazu novostvorenog direktorija.

Primjer -

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

Izlaz:

 Destination path: D:Python ProjectNewFolder 

shutil.rmtree()

Ova se metoda koristi za brisanje cijelog stabla imenika. Pogledajmo sljedeću sintaksu.

Sintaksa:

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

Parametar-

U gornjoj sintaksi -

    staza -Predstavlja putanju datoteke. Objekt nalik stazi je objekt niza ili bajtova.ignoriraj_pogreške -Uklanjanje će biti zanemareno ako je ovaj argument True.pri pogrešci -Ako ignoriraj_pogreške je false, takve se pogreške rješavaju pozivanjem rukovatelja određenog onerror.

Razumimo sljedeći primjer -

Primjer -

10 milijuna
 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) 

Gornji kod će ukloniti navedeni direktorij.

Funkcija shutil.which().

The shutil.koji() funkcija se koristi za dobivanje putanje izvršne aplikacije koja bi se pokrenula da se pozove dani cmd. Pronalazi datoteku na zadanoj stazi. Pogledajmo sljedeću sintaksu.

Sintaksa:

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

Parametri

U gornjoj sintaksi -

    cmd -To je niz koji predstavlja datoteku.način rada -Određuje način datoteke u kojoj se metoda treba izvršiti.staza -Ovaj parametar određuje stazu koja će se koristiti.
  • Ova metoda vraća putanju do izvršne aplikacije.

Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 C:Pythonpython.EXE 

Pronaći će zadanu datoteku na računalu, ako je datoteka pronađena, vraća putanju datoteke, inače vraća Ništa.