logo

Modul Shutil v Pythone

V tomto návode sa dozvieme o module Shutil v Pythone. Budeme diskutovať o tom, ako môžeme vykonávať operácie so súbormi na vysokej úrovni, ako je vytvorenie nového kopírovacieho súboru a jeho archivácia a skopírovanie obsahu z jedného súboru do druhého pomocou skriptu Python. Poďme na základné predstavenie modulu Shutil.

Modul Python Shutil

Modul Python Shutil poskytuje možnosť vykonávať operácie so súbormi na vysokej úrovni. Dokáže pracovať s objektom súboru a ponúka nám možnosť kopírovať a odstraňovať súbory. Zvláda nízkoúrovňovú sémantiku, ako je vytváranie a zatváranie súborových objektov po vykonaní všetkých operácií.

Fungovanie modulu Shutil

Modul Shutil Python prichádza s mnohými vstavanými metódami. Preskúmame niekoľko dôležitých metód. Ak chcete začať pracovať s týmto modulom, najprv ho musíme importovať do nášho aktuálneho súboru Python.

Kopírovať súbory

Tento modul poskytuje kopírovať () funkcia, ktorá sa používa na kopírovanie údajov z jedného súboru do druhého. Súbory musia byť v rovnakom adresári a cieľový súbor musí byť zapisovateľný. Poďme pochopiť nasledujúcu syntax.

Syntax-

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

Parameter:

Vo vyššie uvedenej syntaxi -

  • Prvý argument je source, ktorý ukazuje cestu k zdrojovému súboru.
  • Druhým argumentom je cieľ, ktorý zobrazuje cestu k cieľovému súboru.
  • Tretí argument je voliteľný; predvolená hodnota tohto parametra je true.
  • Vracia reťazec, ktorý ukazuje cestu k novovytvorenému súboru.

Poďme pochopiť nasledujúci príklad.

Príklad -

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

Výkon:

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

vysvetlenie -

Funkcia copy() berie ako argument názov adresára. Tu je metaúdaje nie je skopírovaný, skopírovaný súbor sa bude považovať za čerstvo vytvorený súbor. Táto metóda tiež klonovala všetky povolenia súboru. Jedna vec, ktorú treba poznamenať, je, že ak cieľový súbor už existuje, bude nahradený zdrojovým súborom.

Pozrime sa na ďalší príklad.

Príklad - 2, ak je cieľom adresár

 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) 

Výkon:

 D:Python ProjectNewFilehello.txt 

Ako sme už spomenuli, funkcia copy() nekopíruje metadáta. Použijeme však kópia2() funkcia, ktorá nám umožňuje skopírovať súbor vrátane jeho metadát.

Príklad - 3: Ošetrenie chýb pri používaní metódy kopírovania

java int do reťazca
 # 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.') 

Výkon:

 Source and destination represents the same file. 

Funkcia copy2().

Táto funkcia je podobná ako kopírovať () funkciu. Môže tiež skopírovať obsah jedného súboru do druhého, ale jediný rozdiel je v tom, že dokáže zachovať metadáta súboru. Poďme pochopiť nasledujúcu syntax.

Syntax:

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

Parameter:

Vo vyššie uvedenej syntaxi -

  • Prvý argument je source, ktorý ukazuje cestu k zdrojovému súboru.
  • Druhým argumentom je cieľ, ktorý zobrazuje cestu k cieľovému súboru.
  • Tretí argument je voliteľný; predvolená hodnota tohto parametra je true.
  • Vracia reťazec, ktorý ukazuje cestu k novovytvorenému súboru.

Poďme pochopiť nasledujúci príklad.

Príklad -

 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) 

Výkon:

 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 

Funkcia shutil.copyfile().

Táto metóda sa používa na skopírovanie obsahu zdrojového súboru do cieľového súboru, ktorý očakáva metadáta. Zdroj a cieľ musia mať súbor a cieľový súbor musí poskytovať oprávnenie na zápis. Ak už existuje cieľový súbor, bude nahradený novým súborom, v opačnom prípade vytvorte nový súbor.

Pozrime sa na nasledujúcu syntax.

Syntax:

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

Parametre:

Vo vyššie uvedenej syntaxi -

  • Prvý argument je source, ktorý ukazuje cestu k zdrojovému súboru.
  • Druhým argumentom je cieľ, ktorý zobrazuje cestu k cieľovému súboru.
  • Tretí argument je voliteľný; predvolená hodnota tohto parametra je true.
  • Vracia reťazec, ktorý ukazuje cestu k novovytvorenému súboru.

Poďme pochopiť nasledujúci príklad.

Príklad -

 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) 

Výkon:

 D:Python ProjectNewFilehi.txt 

Funkcia shutil.copytree().

Táto metóda sa používa na replikáciu celého adresára. Skopíruje celý strom adresárov zakorenený v zdroji do cieľového adresára. Cieľový adresár už nesmie existovať. Pozrime sa na nasledujúcu syntax.

Syntax:

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

Parametre:

Vo vyššie uvedenej syntaxi:

    src -Zobrazuje cestu k zdrojovému adresáru.ruka -Zobrazuje cestu k cieľovému adresáru.symbolické odkazy (voliteľné) -Preberá booleovské hodnoty – True a False. Závisí to od toho, ktoré metadáta pôvodných odkazov alebo odkazov sa skopírujú do nového stromu.ignorovať (voliteľné) -V predvolenom nastavení je None, ale ak je ignorovanie odovzdané, musí to byť volateľný, ktorý dostane ako svoje argumenty. Adresár navštívi copytree().copy_function (voliteľné) -Kópia2 je predvolená hodnota tohto parametra. The kopírovať () funkciu možno použiť ako parameter.ignore_dangling_symlinks(voliteľné) -Tento parameter sa používa na vyvolanie výnimky, ak súbor, na ktorý odkazuje symbolický odkaz, neexistuje.
  • Vráti reťazec, ktorý predstavuje cestu k novovytvorenému adresáru.

Príklad -

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

Výkon:

 Destination path: D:Python ProjectNewFolder 

Shutil.rmtree()

Táto metóda sa používa na odstránenie celého adresárového stromu. Pozrime sa na nasledujúcu syntax.

Syntax:

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

Parameter-

Vo vyššie uvedenej syntaxi -

    cesta -Predstavuje cestu k súboru. Objekt podobný ceste je buď objekt typu reťazec alebo bajty.ignore_errors -Ak je tento argument pravdivý, odstránenie bude ignorované.onerror -Ak ignore_errors je nepravda, takéto chyby sa riešia volaním obslužného programu určeného onerror.

Poďme pochopiť nasledujúci príklad -

Príklad -

 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) 

Vyššie uvedený kód odstráni daný adresár.

Funkcia Shutil.which().

The Shutil.which() funkcia sa používa na získanie cesty k spustiteľnej aplikácii, ktorá by sa spustila, ak by sa zavolal daný cmd. Nájde súbor v zadanej ceste. Pozrime sa na nasledujúcu syntax.

Syntax:

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

Parametre

Vo vyššie uvedenej syntaxi -

    cmd -Je to reťazec, ktorý predstavuje súbor.režim -Špecifikuje režim súboru, v ktorom sa má metóda vykonať.cesta -Tento parameter určuje cestu, ktorá sa má použiť.
  • Táto metóda vráti cestu k spustiteľnej aplikácii.

Poďme pochopiť nasledujúci príklad.

Príklad -

čo je dvojitá java
 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

Výkon:

 C:Pythonpython.EXE 

Nájde daný súbor v počítači, ak sa nájde, vráti cestu k súboru, inak vráti None.