logo

Shutil modulis Python

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

    src -Tai rodo šaltinio katalogo kelią.ranka -Tai rodo paskirties katalogo kelią.simboliai (neprivaloma) –Tam reikalingos Būlio reikšmės – True ir False. Tai priklauso nuo to, kurie originalių nuorodų ar nuorodų metaduomenys bus nukopijuoti į naują medį.ignoruoti (neprivaloma) –Pagal numatytuosius nustatymus jis yra None, bet jei ignoravimas yra priimtas, jis turi būti iškviečiamas, kuris gauna kaip argumentus. Katalogą aplanko copytree().kopijavimo_funkcija (neprivaloma) –Copy2 yra numatytoji šio parametro reikšmė. The kopija () funkcija gali būti naudojama kaip parametras.ignore_dangling_symlinks (neprivaloma) –Šis parametras naudojamas išimties nustatymui, jei failo, pažymėto simbolio nuoroda, nėra.
  • 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 -

    kelias -Tai rodo failo kelią. Į kelią panašus objektas yra eilutės arba baitų objektas.ignoruoti_klaidas –Pašalinimas bus ignoruojamas, jei šis argumentas yra teisingas.klaida -Jeigu ignoruoti_klaidas yra klaidingas, tokios klaidos tvarkomos iškviečiant oneror nurodytą tvarkyklę.

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 -

    cmd -Tai eilutė, vaizduojanti failą.režimas -Jis nurodo failo režimą, kuriame turi būti vykdomas metodas.kelias -Šis parametras nurodo naudotiną kelią.
  • Š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.