logo

Shutil modulis Python

Šajā apmācībā mēs uzzināsim par Shutil moduli Python. Mēs apspriedīsim, kā mēs varam veikt augsta līmeņa failu operācijas, piemēram, izveidot jaunu kopiju failu un arhivēt to un kopēt saturu no viena faila uz citu failu, izmantojot Python skriptu. Iepazīstinām ar Shutil moduli.

Python Shutil modulis

Python shutil modulis nodrošina iespēju veikt augsta līmeņa failu operācijas. Tas var darboties ar faila objektu un piedāvā mums iespēju kopēt un noņemt failus. Tas apstrādā zema līmeņa semantisko, piemēram, faila objektu izveidi un aizvēršanu pēc visu darbību veikšanas.

Shutil moduļa darbība

Python shutil modulis ir aprīkots ar daudzām iebūvētām metodēm. Mēs izpētīsim dažas svarīgas metodes. Lai sāktu strādāt ar šo moduli, vispirms tas ir jāimportē mūsu pašreizējā Python failā.

Kopēt failus

Šis modulis nodrošina kopēt () funkcija, ko izmanto, lai kopētu datus no viena faila uz citu. Failiem ir jāatrodas vienā direktorijā, un mērķa failam ir jābūt rakstāmam. Sapratīsim šādu sintaksi.

Sintakse-

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

Parametrs:

Iepriekš minētajā sintaksē -

  • Pirmais arguments ir avots, kas parāda avota faila ceļu.
  • Otrais arguments ir galamērķis, kas parāda mērķa faila ceļu.
  • Trešais arguments nav obligāts; šī parametra noklusējuma vērtība ir patiesa.
  • Tas atgriež virkni, kas parāda jaunizveidotā faila ceļu.

Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

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

Paskaidrojums -

Funkcija copy () izmanto direktorija nosaukumu kā argumentu. Šeit ir metadati netiek kopēts, kopētais fails tiks uzskatīts par tikko izveidoto failu. Šī metode arī klonēja visas faila atļaujas. Viena lieta, kas jāņem vērā, ir tāda, ka, ja mērķa fails jau pastāv, tas tiks aizstāts ar avota failu.

Apskatīsim citu piemēru.

Piemērs - 2, ja galamērķis ir direktorijs

 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) 

Izvade:

 D:Python ProjectNewFilehello.txt 

Kā jau minējām, funkcija copy() nekopē metadatus. Bet mēs izmantosim kopija2() funkcija, kas ļauj mums kopēt failu, tostarp tā metadatus.

3. piemērs: kļūdu apstrāde, izmantojot kopēšanas metodi

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

Izvade:

 Source and destination represents the same file. 

Funkcija copy2()

Šī funkcija ir līdzīga funkcijai kopēt () funkciju. Tā var arī kopēt viena faila saturu citā, taču vienīgā atšķirība ir tā, ka tā var saglabāt faila metadatus. Sapratīsim šādu sintaksi.

Sintakse:

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

Parametrs:

Iepriekš minētajā sintaksē -

  • Pirmais arguments ir avots, kas parāda avota faila ceļu.
  • Otrais arguments ir galamērķis, kas parāda mērķa faila ceļu.
  • Trešais arguments nav obligāts; šī parametra noklusējuma vērtība ir patiesa.
  • Tas atgriež virkni, kas parāda jaunizveidotā faila ceļu.

Sapratīsim šādu piemēru.

Piemērs -

 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) 

Izvade:

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

Šo metodi izmanto, lai kopētu avota faila saturu galamērķa failā, gaidot metadatus. Avotam un galamērķim ir jābūt failam, un mērķa failam ir jānodrošina rakstīšanas atļauja. Ja jau ir mērķa fails, tas tiks aizstāts ar jauno failu, pretējā gadījumā izveidojiet jaunu failu.

numurēts alfabēts

Apskatīsim šādu sintaksi.

Sintakse:

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

Parametri:

Iepriekš minētajā sintaksē -

  • Pirmais arguments ir avots, kas parāda avota faila ceļu.
  • Otrais arguments ir galamērķis, kas parāda mērķa faila ceļu.
  • Trešais arguments nav obligāts; šī parametra noklusējuma vērtība ir patiesa.
  • Tas atgriež virkni, kas parāda jaunizveidotā faila ceļu.

Sapratīsim šādu piemēru.

Piemērs -

 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) 

Izvade:

 D:Python ProjectNewFilehi.txt 

Funkcija shutil.copytree()

Šo metodi izmanto, lai replicētu visu direktoriju. Tas kopē visu direktoriju koku, kas sakņojas avotā, galamērķa direktorijā. Mērķa direktorijs jau nedrīkst atrasties. Apskatīsim šādu sintaksi.

Sintakse:

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

Parametri:

Iepriekš minētajā sintaksē:

    src -Tas parāda avota direktorijas ceļu.roka -Tas parāda galamērķa direktorijas ceļu.simsaites (neobligāti) -Tam ir vajadzīgas Būla vērtības – True un False. Tas ir atkarīgs no tā, kuri sākotnējo saišu vai saišu metadati tiks kopēti jaunajā kokā.ignorēt (pēc izvēles) -Pēc noklusējuma tas ir Nav, bet, ja ignorēšana ir nodota, tai ir jābūt izsaucamam, kas saņem kā argumentus. Direktoriju apmeklē copytree().copy_function (neobligāti) -Copy2 ir šī parametra noklusējuma vērtība. The kopēt () funkciju var izmantot kā parametru.ignore_dangling_symlinks (neobligāti) —Šis parametrs tiek izmantots, lai paaugstinātu izņēmumu, ja fails, uz kuru norāda simboliskā saite, nepastāv.
  • Tas atgriež virkni, kas apzīmē jaunizveidotā direktorija ceļu.

Piemērs -

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

Izvade:

 Destination path: D:Python ProjectNewFolder 

The shutil.rmtree()

Šo metodi izmanto, lai izdzēstu visu direktoriju koku. Apskatīsim šādu sintaksi.

Sintakse:

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

Parametrs-

Iepriekš minētajā sintaksē -

    ceļš -Tas apzīmē faila ceļu. Ceļam līdzīgs objekts ir virknes vai baitu objekts.ignore_errors -Ja šis arguments ir patiess, noņemšana tiks ignorēta.kļūda -Ja ignore_errors ir nepatiess, šādas kļūdas tiek apstrādātas, izsaucot onror norādīto apdarinātāju.

Sapratīsim šādu piemēru -

Piemērs -

 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) 

Iepriekš minētais kods noņems norādīto direktoriju.

The shutil.which() funkcija

The shutil.which() funkcija tiek izmantota, lai iegūtu izpildāmās lietojumprogrammas ceļu, kas tiktu palaists, ja tiktu izsaukta dotā cmd. Tas atrod failu norādītajā ceļā. Apskatīsim šādu sintaksi.

Sintakse:

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

Parametri

Iepriekš minētajā sintaksē -

    cmd -Tā ir virkne, kas apzīmē failu.režīms -Tas norāda faila režīmu, kurā metode jāizpilda.ceļš -Šis parametrs norāda izmantojamo ceļu.
  • Šī metode atgriež ceļu uz izpildāmo lietojumprogrammu.

Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

 C:Pythonpython.EXE 

Tas atradīs norādīto failu datorā, ja fails tiek atrasts, tas atgriež faila ceļu, pretējā gadījumā atgriež Nav.