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