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