Šiame vadove mes sužinosime apie Python Shutil modulį. Aptarsime, kaip galime atlikti aukšto lygio failo operaciją, pvz., sukurti naują kopijos failą ir jį archyvuoti bei nukopijuoti turinį iš vieno failo į kitą failą naudodami Python scenarijų. Pateikiame pagrindinį Shutil modulio įvadą.
Python Shutil modulis
Python shutil modulis suteikia galimybę atlikti aukšto lygio failų operaciją. Jis gali veikti su failo objektu ir suteikia mums galimybę kopijuoti ir pašalinti failus. Jis tvarko žemo lygio semantiką, pavyzdžiui, failų objektų kūrimą ir uždarymą, atlikus visas operacijas.
Shutil modulio veikimas
Python shutil modulyje yra daug integruotų metodų. Išnagrinėsime keletą svarbių metodų. Norėdami pradėti dirbti su šiuo moduliu, pirmiausia turime jį importuoti į dabartinį Python failą.
Kopijuoti failus
Šis modulis suteikia kopija () funkcija, kuri naudojama duomenims kopijuoti iš vieno failo į kitą. Failai turi būti tame pačiame kataloge, o paskirties failas turi būti įrašomas. Supraskime šią sintaksę.
Sintaksė-
tostring metodas java
shutil.copyfile(source, destination, *, follow_symlinks = True)
Parametras:
Aukščiau pateiktoje sintaksėje -
- Pirmasis argumentas yra šaltinis, kuris rodo šaltinio failo kelią.
- Antrasis argumentas yra paskirties vieta, kuri rodo paskirties failo kelią.
- Trečiasis argumentas yra neprivalomas; numatytoji šio parametro reikšmė yra teisinga.
- Jis grąžina eilutę, kuri rodo naujai sukurto failo kelią.
Supraskime šį pavyzdį.
Pavyzdys -
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'))
Išvestis:
Empty Folder: [] File Copied Name: ['testcompare.py']
Paaiškinimas -
Funkcija copy () naudoja katalogo pavadinimą kaip argumentą. Čia metaduomenys nėra nukopijuotas, nukopijuotas failas bus laikomas naujai sukurtu failu. Šis metodas taip pat klonavo visas failo teises. Reikia atkreipti dėmesį į tai, kad jei paskirties failas jau yra, jis bus pakeistas šaltinio failu.
kas yra dviguba java
Pažiūrėkime kitą pavyzdį.
Pavyzdys – 2, jei paskirties vieta yra katalogas
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)
Išvestis:
D:Python ProjectNewFilehello.txt
Kaip jau minėjome, funkcija copy() nekopijuoja metaduomenų. Tačiau mes naudosime kopija2 () funkcija, leidžianti nukopijuoti failą, įskaitant jo metaduomenis.
Pavyzdys - 3: Klaidų apdorojimas naudojant kopijavimo metodą
# 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.')
Išvestis:
Source and destination represents the same file.
Copy2() funkcija
Ši funkcija yra panaši į kopija () funkcija. Jis taip pat gali nukopijuoti vieno failo turinį į kitą, tačiau vienintelis skirtumas yra tas, kad gali išsaugoti failo metaduomenis. Supraskime šią sintaksę.
Sintaksė:
shutil.copy2(source, destination, *, follow_symlinks = True)
Parametras:
Aukščiau pateiktoje sintaksėje -
- Pirmasis argumentas yra šaltinis, kuris rodo šaltinio failo kelią.
- Antrasis argumentas yra paskirties vieta, kuri rodo paskirties failo kelią.
- Trečiasis argumentas yra neprivalomas; numatytoji šio parametro reikšmė yra teisinga.
- Jis grąžina eilutę, kuri rodo naujai sukurto failo kelią.
Supraskime šį pavyzdį.
Pavyzdys -
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)
Išvestis:
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
Funkcija shutil.copyfile()
Šis metodas naudojamas šaltinio failo turiniui nukopijuoti į paskirties failą, tikėdamiesi metaduomenų. Šaltinis ir paskirties vieta turi turėti failą, o paskirties failas turi suteikti rašymo leidimą. Jei jau yra paskirties failas, jis bus pakeistas nauju failu, kitaip sukurkite naują failą.
Pažiūrėkime šią sintaksę.
Sintaksė:
shutil.copyfile(source, destination, *, follow_symlinks = True)
Parametrai:
gimp pašalinti vandens ženklą
Aukščiau pateiktoje sintaksėje -
- Pirmasis argumentas yra šaltinis, kuris rodo šaltinio failo kelią.
- Antrasis argumentas yra paskirties vieta, kuri rodo paskirties failo kelią.
- Trečiasis argumentas yra neprivalomas; numatytoji šio parametro reikšmė yra teisinga.
- Jis grąžina eilutę, kuri rodo naujai sukurto failo kelią.
Supraskime šį pavyzdį.
Pavyzdys -
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)
Išvestis:
D:Python ProjectNewFilehi.txt
Funkcija shutil.copytree()
Šis metodas naudojamas viso katalogo kopijavimui. Jis nukopijuoja visą katalogų medį, įsišaknijusį šaltinyje, į paskirties katalogą. Paskirties katalogas dar neturi būti. Pažiūrėkime šią sintaksę.
Sintaksė:
c++ gui
shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False)
Parametrai:
Aukščiau pateiktoje sintaksėje:
- Jis grąžina eilutę, kuri nurodo naujai sukurto katalogo kelią.
Pavyzdys -
# 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)
Išvestis:
Destination path: D:Python ProjectNewFolder
The shutil.rmtree()
Šis metodas naudojamas visam katalogų medžiui ištrinti. Pažiūrėkime šią sintaksę.
Sintaksė:
shutil.rmtree(path, ignore_errors=False, onerror=None)
Parametras-
java dizaino modelis
Aukščiau pateiktoje sintaksėje -
Supraskime šį pavyzdį -
Pavyzdys -
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)
Aukščiau pateiktas kodas pašalins nurodytą katalogą.
The shutil.which() funkcija
The shutil.which() Funkcija naudojama norint gauti vykdomosios programos kelią, kuris būtų paleistas, jei būtų iškviesta nurodyta cmd. Jis suranda failą nurodytame kelyje. Pažiūrėkime šią sintaksę.
Sintaksė:
shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None)
Parametrai
Aukščiau pateiktoje sintaksėje -
- Šis metodas grąžina kelią į vykdomąją programą.
Supraskime šį pavyzdį.
Pavyzdys -
# importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating)
Išvestis:
C:Pythonpython.EXE
Jis suras nurodytą failą kompiuteryje, jei failas bus rastas, jis grąžins failo kelią, kitu atveju grąžins Nėra.