I denne opplæringen vil vi lære om Shutil-modulen i Python. Vi vil diskutere hvordan vi kan utføre filoperasjonen på høyt nivå som å lage en ny kopifil og arkivere den og kopiere innhold fra én fil til en annen fil ved hjelp av Python-skriptet. La oss få en grunnleggende introduksjon av Shutil-modulen.
c struktur i struktur
Python Shutil-modul
Python shutil-modulen gir mulighet for å utføre filoperasjonen på høyt nivå. Den kan operere med filobjektet og gir oss muligheten til å kopiere og fjerne filene. Den håndterer semantikken på lavt nivå som å lage og lukke filobjekter etter å ha utført alle operasjoner.
Arbeid med Shutil-modulen
Python shutil-modulen kommer med de mange innebygde metodene. Vi vil utforske noen viktige metoder. For å begynne å jobbe med denne modulen, må vi først importere den i vår nåværende Python-fil.
Kopier filer
Denne modulen gir kopiere() funksjon som brukes til å kopiere data fra en fil til en annen. Filene må være i samme katalog og målfilen må være skrivbar. La oss forstå følgende syntaks.
Syntaks-
shutil.copyfile(source, destination, *, follow_symlinks = True)
Parameter:
I syntaksen ovenfor -
- Det første argumentet er kilde som viser banen til kildefilen.
- Det andre argumentet er destinasjon som viser banen til destinasjonsfilen.
- Det tredje argumentet er valgfritt; standardverdien for denne parameteren er sann.
- Den returnerer en streng som viser banen til den nyopprettede filen.
La oss forstå følgende eksempel.
Eksempel -
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'))
Produksjon:
Empty Folder: [] File Copied Name: ['testcompare.py']
Forklaring -
Kopier()-funksjonen tar katalognavn som et argument. Her er metadata ikke er kopiert, vil den kopierte filen betraktes som den nyopprettede filen. Denne metoden klonet også all-tillatelsen til filen. En ting å merke seg er at hvis målfilen allerede eksisterer, vil den bli erstattet med kildefilen.
La oss se et annet eksempel.
Eksempel - 2 hvis en destinasjon er en katalog
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)
Produksjon:
D:Python ProjectNewFilehello.txt
Som vi har nevnt det, kopierer ikke copy()-funksjonen metadataene. Men vi vil bruke kopi2() funksjon som lar oss kopiere filen inkludert dens metadata.
Eksempel - 3: Feilhåndtering ved bruk av kopieringsmetode
# 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.')
Produksjon:
Source and destination represents the same file.
Kopier2()-funksjonen
Denne funksjonen ligner på kopiere() funksjon. Den kan også kopiere innholdet i en fil til en annen, men den eneste forskjellen er at den kan bevare filens metadata. La oss forstå følgende syntaks.
Syntaks:
shutil.copy2(source, destination, *, follow_symlinks = True)
Parameter:
I syntaksen ovenfor -
- Det første argumentet er kilde som viser banen til kildefilen.
- Det andre argumentet er destinasjon som viser banen til destinasjonsfilen.
- Det tredje argumentet er valgfritt; standardverdien for denne parameteren er sann.
- Den returnerer en streng som viser banen til den nyopprettede filen.
La oss forstå følgende eksempel.
Eksempel -
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)
Produksjon:
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
Funksjonen shutil.copyfile()
Denne metoden brukes til å kopiere innholdet i kildefilen til målfilen forventer metadata. Kilde og mål må ha en fil og målfil må gi skrivetillatelse. Hvis en målfil allerede er til stede, vil den bli erstattet av den nye filen ellers opprette en ny fil.
hva er dobbel java
La oss se følgende syntaks.
ordbryting css
Syntaks:
shutil.copyfile(source, destination, *, follow_symlinks = True)
Parametere:
I syntaksen ovenfor -
- Det første argumentet er kilde som viser banen til kildefilen.
- Det andre argumentet er destinasjon som viser banen til destinasjonsfilen.
- Det tredje argumentet er valgfritt; standardverdien for denne parameteren er sann.
- Den returnerer en streng som viser banen til den nyopprettede filen.
La oss forstå følgende eksempel.
Eksempel -
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)
Produksjon:
D:Python ProjectNewFilehi.txt
Funksjonen shutil.copytree()
Denne metoden brukes til å replikere hele katalogen. Den kopierer et helt katalogtre med rot ved kilden til målkatalogen. Destinasjonskatalogen må ikke allerede finnes. La oss se følgende syntaks.
Syntaks:
shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False)
Parametere:
I syntaksen ovenfor:
- Den returnerer strengen som representerer banen til den nyopprettede katalogen.
Eksempel -
# 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)
Produksjon:
Destination path: D:Python ProjectNewFolder
shutil.rmtree()
Denne metoden brukes til å slette hele katalogtreet. La oss se følgende syntaks.
Syntaks:
shutil.rmtree(path, ignore_errors=False, onerror=None)
Parameter-
I syntaksen ovenfor -
La oss forstå følgende eksempel -
Eksempel -
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)
Koden ovenfor vil fjerne den gitte katalogen.
Funksjonen shutil.which()
De shutil.which() funksjonen brukes til å få banen til et kjørbart program som ville blitt kjørt hvis den gitte cmd ble kalt. Den finner filen i den angitte banen. La oss se følgende syntaks.
Syntaks:
shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None)
Parametere
I syntaksen ovenfor -
mysql oppdatering bli med
- Denne metoden returnerer banen til en kjørbar applikasjon.
La oss forstå følgende eksempel.
Eksempel -
# importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating)
Produksjon:
C:Pythonpython.EXE
Den vil finne den gitte filen på datamaskinen, hvis filen blir funnet returnerer den banen til filen ellers returnerer ingen.