logo

Shutil-module in Python

In deze tutorial leren we over de Shutil-module in Python. We zullen bespreken hoe we de bestandsbewerking op hoog niveau kunnen uitvoeren, zoals het maken van een nieuw kopieerbestand en het archiveren ervan en het kopiëren van de inhoud van het ene bestand naar het andere bestand met behulp van het Python-script. Laten we een basisintroductie van de Shutil-module houden.

beste auto's ter wereld

Python Shutil-module

De Python shutil-module biedt de mogelijkheid om de bestandsbewerking op hoog niveau uit te voeren. Het kan werken met het bestandsobject en biedt ons de mogelijkheid om de bestanden te kopiëren en te verwijderen. Het verzorgt de semantiek op laag niveau, zoals het maken en sluiten van bestandsobjecten na het uitvoeren van alle bewerkingen.

Werking van de Shutil-module

De Python shutil-module wordt geleverd met de vele ingebouwde methoden. We zullen een paar belangrijke methoden verkennen. Om met deze module te gaan werken, moeten we deze eerst in ons huidige Python-bestand importeren.

Kopieer bestanden

Deze module biedt de kopiëren() functie die wordt gebruikt om gegevens van het ene bestand naar het andere te kopiëren. De bestanden moeten zich in dezelfde map bevinden en het doelbestand moet beschrijfbaar zijn. Laten we de volgende syntaxis begrijpen.

Syntaxis-

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

Parameter:

In de bovenstaande syntaxis -

  • Het eerste argument is source, dat het pad van het bronbestand weergeeft.
  • Het tweede argument is bestemming, dat het pad van het bestemmingsbestand toont.
  • Het derde argument is optioneel; de standaardwaarde van deze parameter is waar.
  • Het retourneert een string die het pad van het nieuw aangemaakte bestand toont.

Laten we het volgende voorbeeld begrijpen.

Voorbeeld -

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

Uitgang:

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

Uitleg -

De functie copy() neemt de mapnaam als argument. Hier de metagegevens niet wordt gekopieerd, wordt het gekopieerde bestand beschouwd als het zojuist gemaakte bestand. Met deze methode worden ook alle machtigingen van het bestand gekloond. Eén ding om op te merken is dat als het doelbestand al bestaat, dit zal worden vervangen door het bronbestand.

Laten we nog een voorbeeld bekijken.

Voorbeeld - 2 als een bestemming een map is

 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) 

Uitgang:

 D:Python ProjectNewFilehello.txt 

Zoals we al hebben vermeld, kopieert de functie copy() de metagegevens niet. Maar we zullen gebruik maken van de kopie2() functie waarmee we het bestand inclusief de metadata kunnen kopiëren.

Voorbeeld - 3: Foutafhandeling tijdens het gebruik van de kopieermethode

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

Uitgang:

 Source and destination represents the same file. 

De copy2()-functie

Deze functie is vergelijkbaar met de kopiëren() functie. Het kan ook de inhoud van het ene bestand naar het andere kopiëren, maar het enige verschil is dat het de metagegevens van het bestand kan behouden. Laten we de volgende syntaxis begrijpen.

Syntaxis:

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

Parameter:

In de bovenstaande syntaxis -

  • Het eerste argument is source, dat het pad van het bronbestand weergeeft.
  • Het tweede argument is bestemming, dat het pad van het bestemmingsbestand toont.
  • Het derde argument is optioneel; de standaardwaarde van deze parameter is waar.
  • Het retourneert een string die het pad van het nieuw aangemaakte bestand toont.

Laten we het volgende voorbeeld begrijpen.

Voorbeeld -

 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) 

Uitgang:

 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 

De functie shutil.copyfile().

Deze methode wordt gebruikt om de inhoud van het bronbestand naar het doelbestand te kopiëren, behalve de metagegevens. Bron en bestemming moeten een bestand hebben en het doelbestand moet schrijfrechten bieden. Als er al een doelbestand aanwezig is, wordt dit vervangen door het nieuwe bestand, anders maakt u een nieuw bestand.

wat is een dubbele Java

Laten we de volgende syntaxis bekijken.

Syntaxis:

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

Parameters:

In de bovenstaande syntaxis -

  • Het eerste argument is source, dat het pad van het bronbestand weergeeft.
  • Het tweede argument is bestemming, dat het pad van het bestemmingsbestand toont.
  • Het derde argument is optioneel; de standaardwaarde van deze parameter is waar.
  • Het retourneert een string die het pad van het nieuw aangemaakte bestand toont.

Laten we het volgende voorbeeld begrijpen.

Voorbeeld -

tekenreeksfuncties java
 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) 

Uitgang:

 D:Python ProjectNewFilehi.txt 

De functie shutil.copytree().

Deze methode wordt gebruikt om de volledige map te repliceren. Het kopieert een volledige directorystructuur, geworteld in de bron, naar de doelmap. De doelmap mag nog niet aanwezig zijn. Laten we de volgende syntaxis bekijken.

Syntaxis:

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

Parameters:

In de bovenstaande syntaxis:

    src -Het toont het pad van de bronmap.hand -Het toont het pad van de doelmap.symlinks (optioneel) -Er zijn de Booleaanse waarden nodig: True en False. Het hangt ervan af welke metadata van originele links of links naar de nieuwe boom worden gekopieerd.negeren (optioneel) -Standaard is dit Geen, maar als de negeerfunctie wordt doorgegeven, moet het een opvraagbare optie zijn die als argumenten ontvangt. De map wordt bezocht door copytree().kopie_functie(optioneel) -De copy2 is de standaardwaarde van deze parameter. De kopiëren() functie kan als parameter worden gebruikt.negeer_dangling_symlinks (optioneel) -Deze parameter wordt gebruikt om de uitzondering te genereren als het bestand waarnaar wordt verwezen door de symlink niet bestaat.
  • Het retourneert de tekenreeks die het pad van de nieuw aangemaakte map vertegenwoordigt.

Voorbeeld -

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

Uitgang:

 Destination path: D:Python ProjectNewFolder 

De shutil.rmtree()

Deze methode wordt gebruikt om de volledige directorystructuur te verwijderen. Laten we de volgende syntaxis bekijken.

Syntaxis:

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

Parameter-

In de bovenstaande syntaxis -

    pad -Het vertegenwoordigt het bestandspad. Een padachtig object is een string- of bytes-object.negeer_fouten -De verwijdering wordt genegeerd als dit argument waar is.een fout -Als negeer_fouten false is, worden dergelijke fouten afgehandeld door een handler aan te roepen die is opgegeven door onerror.

Laten we het volgende voorbeeld begrijpen -

Voorbeeld -

 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) 

De bovenstaande code verwijdert de opgegeven map.

De shutil. Which()-functie

De shutil.welke() functie wordt gebruikt om het pad op te halen van een uitvoerbare applicatie die zou worden uitgevoerd als de gegeven cmd werd aangeroepen. Het vindt het bestand in het opgegeven pad. Laten we de volgende syntaxis bekijken.

je s t

Syntaxis:

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

Parameters

In de bovenstaande syntaxis -

    cmd -Het is een tekenreeks die het bestand vertegenwoordigt.modus -Het specificeert de bestandsmodus waarin de methode moet worden uitgevoerd.pad -Deze parameter specificeert het te gebruiken pad.
  • Deze methode retourneert het pad naar een uitvoerbare toepassing.

Laten we het volgende voorbeeld begrijpen.

Voorbeeld -

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

Uitgang:

 C:Pythonpython.EXE 

Het zal het opgegeven bestand op de computer vinden. Als het bestand wordt gevonden, wordt het pad van het bestand geretourneerd, anders wordt Geen geretourneerd.