logo

Shutil-modul i Python

I denne tutorial lærer vi om Shutil-modulet i Python. Vi vil diskutere, hvordan vi kan udføre filoperationen på højt niveau, såsom at oprette en ny kopifil og arkivere den og kopiere indhold fra en fil til en anden fil ved hjælp af Python-scriptet. Lad os få en grundlæggende introduktion af Shutil-modulet.

heap-sorteringsalgoritme

Python Shutil modul

Python shutil-modulet giver mulighed for at udføre filoperationen på højt niveau. Det kan fungere med filobjektet og giver os mulighed for at kopiere og fjerne filerne. Den håndterer semantikken på lavt niveau, såsom oprettelse og lukning af filobjekter efter at have udført alle handlinger.

Arbejde med Shutil-modulet

Python shutil modul kommer med de mange indbyggede metoder. Vi vil undersøge et par vigtige metoder. For at begynde at arbejde med dette modul skal vi først importere det i vores nuværende Python-fil.

Kopier filer

Dette modul giver kopi() funktion som bruges til at kopiere data fra en fil til en anden. Filerne skal være i samme mappe, og destinationsfilen skal være skrivbar. Lad os forstå følgende syntaks.

Syntaks-

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

Parameter:

I ovenstående syntaks -

  • Det første argument er kilde, som viser stien til kildefilen.
  • Det andet argument er destination, som viser stien til destinationsfilen.
  • Det tredje argument er valgfrit; standardværdien for denne parameter er sand.
  • Det returnerer en streng, som viser stien til den nyoprettede fil.

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

Produktion:

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

Forklaring -

Funktionen copy() tager mappenavn som et argument. Her er metadata ikke er kopieret, vil den kopierede fil blive betragtet som den nyoprettede fil. Denne metode klonede også alle tilladelser til filen. En ting at bemærke er, at hvis destinationsfilen allerede eksisterer, vil den blive erstattet med kildefilen.

Lad os se et andet eksempel.

Eksempel - 2 hvis en destination er en adressebog

 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) 

Produktion:

 D:Python ProjectNewFilehello.txt 

Som vi har nævnt det, kopierer funktionen copy() ikke metadataene. Men vi vil bruge kopi2() funktion, som giver os mulighed for at kopiere filen inklusive dens metadata.

Eksempel - 3: Fejlhåndtering under brug af kopimetode

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

Produktion:

 Source and destination represents the same file. 

Copy2()-funktionen

Denne funktion ligner kopi() fungere. Den kan også kopiere indholdet af en fil til en anden, men den eneste forskel er, at den kan bevare filens metadata. Lad os forstå følgende syntaks.

Syntaks:

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

Parameter:

I ovenstående syntaks -

  • Det første argument er kilde, som viser stien til kildefilen.
  • Det andet argument er destination, som viser stien til destinationsfilen.
  • Det tredje argument er valgfrit; standardværdien for denne parameter er sand.
  • Det returnerer en streng, som viser stien til den nyoprettede fil.

Lad os 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) 

Produktion:

 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 

Funktionen shutil.copyfile()

Denne metode bruges til at kopiere indholdet af kildefilen til destinationsfilen forventer metadata. Kilde og destination skal have en fil, og destinationsfil skal give skrivetilladelsen. Hvis der allerede er destinationsfil til stede, vil den blive erstattet af den nye fil ellers oprette en ny fil.

hvad er en dobbelt java

Lad os se følgende syntaks.

ordombrydning css

Syntaks:

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

Parametre:

I ovenstående syntaks -

  • Det første argument er kilde, som viser stien til kildefilen.
  • Det andet argument er destination, som viser stien til destinationsfilen.
  • Det tredje argument er valgfrit; standardværdien for denne parameter er sand.
  • Det returnerer en streng, som viser stien til den nyoprettede fil.

Lad os 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) 

Produktion:

 D:Python ProjectNewFilehi.txt 

Funktionen shutil.copytree()

Denne metode bruges til at replikere hele mappen. Den kopierer et helt bibliotekstræ med rod ved kilden til destinationsbiblioteket. Destinationsbiblioteket må ikke allerede findes. Lad os se følgende syntaks.

Syntaks:

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

Parametre:

I ovenstående syntaks:

    src -Det viser stien til kildemappen.hånd -Den viser stien til destinationsmappen.symbollinks (valgfrit) -Det tager de boolske værdier - Sand og Falsk. Det afhænger af, hvilke metadata for originale links eller links, der vil blive kopieret til det nye træ.ignorere (valgfrit) -Som standard er det Ingen, men Hvis ignoreringen er bestået, skal den være en callable, der modtager som sine argumenter. Biblioteket besøges af copytree().kopifunktion (valgfrit) -Copy2 er standardværdien for denne parameter. Det kopi() funktion kan bruges som parameter.ignore_dangling_symlinks (valgfrit) -Denne parameter bruges til at hæve undtagelsen, hvis filen, der peges på af et symbolsk link, ikke eksisterer.
  • Det returnerer den streng, som repræsenterer stien til den nyoprettede mappe.

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) 

Produktion:

 Destination path: D:Python ProjectNewFolder 

shutil.rmtree()

Denne metode bruges til at slette hele mappetræet. Lad os se følgende syntaks.

Syntaks:

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

Parameter-

I ovenstående syntaks -

    vej -Det repræsenterer filstien. Et stilignende objekt er enten et streng- eller bytesobjekt.ignorer_errors -Fjernelsen vil blive ignoreret, hvis dette argument er sandt.fejl -Hvis ignorer_errors er falsk, håndteres sådanne fejl ved at kalde en handler specificeret af onerror.

Lad os 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) 

Ovenstående kode vil fjerne den givne mappe.

Funktionen shutil.which()

Det shutil.which() funktion bruges til at få stien til et eksekverbart program, der ville blive kørt, hvis den givne cmd blev kaldt. Den finder filen i den givne sti. Lad os se følgende syntaks.

Syntaks:

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

Parametre

I ovenstående syntaks -

en række objekter java
    cmd -Det er streng, der repræsenterer filen.tilstand -Det specificerer filtilstanden, i hvilken metode skal udføres.vej -Denne parameter angiver stien, der skal bruges.
  • Denne metode returnerer stien til en eksekverbar applikation.

Lad os 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) 

Produktion:

 C:Pythonpython.EXE 

Den vil finde den givne fil på computeren, hvis filen findes returnerer den stien til filen ellers returnerer den Ingen.