logo

Shutil-modul i Python

I den här handledningen kommer vi att lära oss om Shutil-modulen i Python. Vi kommer att diskutera hur vi kan utföra filoperationen på hög nivå som att skapa en ny kopieringsfil och arkivera den och kopiera innehåll från en fil till en annan fil med Python-skriptet. Låt oss ha en grundläggande introduktion av Shutil-modulen.

slumpmässig nummer c-kod

Python Shutil-modul

Python shutil-modulen ger möjlighet att utföra filoperationen på hög nivå. Den kan arbeta med filobjektet och erbjuder oss möjligheten att kopiera och ta bort filerna. Den hanterar semantiken på låg nivå som att skapa och stänga filobjekt efter att ha utfört alla operationer.

Fungerar av Shutil-modulen

Python shutil-modulen kommer med de många inbyggda metoderna. Vi kommer att utforska några viktiga metoder. För att börja arbeta med den här modulen måste vi först importera den i vår nuvarande Python-fil.

Kopiera filer

Denna modul tillhandahåller kopiera() funktion som används för att kopiera en data från en fil till en annan. Filerna måste vara i samma katalog och målfilen måste vara skrivbar. Låt oss förstå följande syntax.

Syntax-

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

Parameter:

I ovanstående syntax -

  • Det första argumentet är källa som visar sökvägen till källfilen.
  • Det andra argumentet är destination som visar sökvägen till destinationsfilen.
  • Det tredje argumentet är valfritt; standardvärdet för denna parameter är sant.
  • Den returnerar en sträng som visar sökvägen till den nyskapade filen.

Låt oss förstå följande exempel.

Exempel -

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

Förklaring -

Funktionen copy() tar katalognamnet som ett argument. Här metadata inte kopieras, kommer den kopierade filen att betraktas som den nyskapade filen. Denna metod klonade också filens all-behörighet. En sak att notera är att om målfilen redan finns kommer den att ersättas med källfilen.

Låt oss se ett annat exempel.

Exempel - 2 om en destination är 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) 

Produktion:

 D:Python ProjectNewFilehello.txt 

Som vi har nämnt kopierar funktionen copy() inte metadata. Men vi kommer att använda copy2() funktion som låter oss kopiera filen inklusive dess metadata.

Exempel - 3: Felhantering vid användning av kopieringsmetoden

 # 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

Denna funktion liknar den kopiera() fungera. Den kan också kopiera innehållet i en fil till en annan men den enda skillnaden är att den kan bevara filens metadata. Låt oss förstå följande syntax.

Syntax:

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

Parameter:

I ovanstående syntax -

  • Det första argumentet är source som visar sökvägen till källfilen.
  • Det andra argumentet är destination som visar sökvägen till destinationsfilen.
  • Det tredje argumentet är valfritt; standardvärdet för denna parameter är sant.
  • Den returnerar en sträng som visar sökvägen till den nyskapade filen.

Låt oss förstå följande exempel.

Exempel -

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

Denna metod används för att kopiera innehållet i källfilen till målfilen förväntar sig metadata. Källan och destinationen måste ha en fil och destinationsfilen måste ge skrivbehörighet. Om det redan finns en destinationsfil kommer den att ersättas av den nya filen, annars skapa en ny fil.

vad är en dubbel java

Låt oss se följande syntax.

Syntax:

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

Parametrar:

I ovanstående syntax -

  • Det första argumentet är source som visar sökvägen till källfilen.
  • Det andra argumentet är destination som visar sökvägen till destinationsfilen.
  • Det tredje argumentet är valfritt; standardvärdet för denna parameter är sant.
  • Den returnerar en sträng som visar sökvägen till den nyskapade filen.

Låt oss förstå följande exempel.

Exempel -

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

Denna metod används för att replikera hela katalogen. Den kopierar ett helt katalogträd som är rotat vid källan till målkatalogen. Målkatalogen får inte redan finnas. Låt oss se följande syntax.

Syntax:

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

Parametrar:

I ovanstående syntax:

    src -Den visar sökvägen till källkatalogen.hand -Den visar sökvägen till destinationskatalogen.symbollänkar (valfritt) -Det tar de booleska värdena - True and False. Det beror på vilken metadata för ursprungliga länkar eller länkar som kommer att kopieras till det nya trädet.ignorera (valfritt) -Som standard är det Ingen men Om ignoreringen godkänns måste den vara en callable som tar emot som dess argument. Katalogen besöks av copytree().copy_function (valfritt) -Copy2 är standardvärdet för denna parameter. De kopiera() funktion kan användas som parameter.ignore_dangling_symlinks(valfritt) -Den här parametern används för att höja undantaget om filen som pekas av symbolisk länk inte existerar.
  • Den returnerar strängen som representerar sökvägen till den nyskapade katalogen.

Exempel -

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

när slutar q1
 Destination path: D:Python ProjectNewFolder 

shutil.rmtree()

Denna metod används för att ta bort hela katalogträdet. Låt oss se följande syntax.

Syntax:

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

Parameter-

I ovanstående syntax -

    väg -Den representerar filsökvägen. Ett banliknande objekt är antingen ett sträng- eller bytesobjekt.ignore_errors -Borttagningen kommer att ignoreras om detta argument är sant.ett fel -Om ignore_errors är falsk, hanteras sådana fel genom att anropa en hanterare specificerad av onerror.

Låt oss förstå följande exempel -

Exempel -

 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) 

Ovanstående kod kommer att ta bort den givna katalogen.

Funktionen shutil.which()

De shutil.which() funktion används för att få sökvägen till ett körbart program som skulle köras om den givna cmd anropades. Den hittar filen i den angivna sökvägen. Låt oss se följande syntax.

Syntax:

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

Parametrar

I ovanstående syntax -

    cmd -Det är en sträng som representerar filen.läge -Den anger filläget i vilken metod ska köras.väg -Denna parameter anger sökvägen som ska användas.
  • Denna metod returnerar sökvägen till ett körbart program.

Låt oss förstå följande exempel.

Exempel -

 # 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 kommer att hitta den givna filen i datorn, om filen hittas returnerar den sökvägen till filen annars returnerar den Ingen.