logo

Shutil modul Pythonban

Ebben az oktatóanyagban megismerjük a Python Shutil modulját. Megbeszéljük, hogyan hajthatjuk végre a magas szintű fájlműveleteket, például új másolófájl létrehozását és archiválását, valamint a tartalom másolását egyik fájlból a másik fájlba a Python szkript segítségével. Nézzük a Shutil modul alapvető bemutatását.

javascript mintakód példák

Python Shutil modul

A Python shutil modul lehetővé teszi a magas szintű fájlműveletek végrehajtását. Működhet a fájlobjektummal, és lehetőséget kínál a fájlok másolására és eltávolítására. Kezeli az alacsony szintű szemantikát, például a fájlobjektumok létrehozását és bezárását az összes művelet elvégzése után.

A Shutil modul működése

A Python shutil modul számos beépített módszerrel rendelkezik. Megvizsgálunk néhány fontos módszert. A modullal való munka megkezdéséhez először importálnunk kell a jelenlegi Python-fájlunkba.

Fájlok másolása

Ez a modul biztosítja a másolat() funkció, amellyel az adatok egyik fájlból a másikba másolhatók. A fájloknak ugyanabban a könyvtárban kell lenniük, és a célfájlnak írhatónak kell lennie. Értsük meg a következő szintaxist.

Szintaxis-

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

Paraméter:

A fenti szintaxisban -

  • Az első argumentum a forrás, amely a forrásfájl elérési útját mutatja.
  • A második argumentum a cél, amely a célfájl elérési útját mutatja.
  • A harmadik argumentum nem kötelező; ennek a paraméternek az alapértelmezett értéke igaz.
  • Egy karakterláncot ad vissza, amely az újonnan létrehozott fájl elérési útját mutatja.

Értsük meg a következő példát.

Példa -

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

Kimenet:

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

Magyarázat -

A copy() függvény a könyvtár nevét veszi argumentumként. Itt a metaadatokat nincs másolva, a másolt fájl frissen létrehozott fájlnak minősül. Ez a módszer a fájl összes engedélyét is klónozta. Egy dolog, amit meg kell jegyeznünk, hogy ha a célfájl már létezik, a rendszer a forrásfájlra cseréli.

Lássunk egy másik példát.

Példa - 2, ha a cél egy címtá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) 

Kimenet:

 D:Python ProjectNewFilehello.txt 

Mint már említettük, a copy() függvény nem másolja a metaadatokat. De használni fogjuk a copy2() funkció, amely lehetővé teszi a fájl másolását a metaadatokkal együtt.

Példa - 3: Hibakezelés a másolási módszer használata közben

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

Kimenet:

 Source and destination represents the same file. 

A copy2() függvény

Ez a funkció hasonló a másolat() funkció. Másolhatja az egyik fájl tartalmát a másikba, de az egyetlen különbség az, hogy meg tudja őrizni a fájl metaadatait. Értsük meg a következő szintaxist.

Szintaxis:

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

Paraméter:

A fenti szintaxisban -

  • Az első argumentum a forrás, amely a forrásfájl elérési útját mutatja.
  • A második argumentum a cél, amely a célfájl elérési útját mutatja.
  • A harmadik argumentum nem kötelező; ennek a paraméternek az alapértelmezett értéke igaz.
  • Egy karakterláncot ad vissza, amely az újonnan létrehozott fájl elérési útját mutatja.

Értsük meg a következő példát.

Példa -

 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) 

Kimenet:

 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 

A shutil.copyfile() függvény

Ezzel a módszerrel a forrásfájl tartalmát a célfájlba másolják, amelyre várják a metaadatokat. A forrásnak és a célnak rendelkeznie kell egy fájllal, és a célfájlnak biztosítania kell az írási engedélyt. Ha már van célfájl, akkor azt lecseréli az új fájlra, ellenkező esetben új fájlt hoz létre.

mi az a dupla java

Lássuk a következő szintaxist.

Szintaxis:

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

Paraméterek:

A fenti szintaxisban -

python konvertálja a bájtokat karakterláncokká
  • Az első argumentum a forrás, amely a forrásfájl elérési útját mutatja.
  • A második argumentum a cél, amely a célfájl elérési útját mutatja.
  • A harmadik argumentum nem kötelező; ennek a paraméternek az alapértelmezett értéke igaz.
  • Egy karakterláncot ad vissza, amely az újonnan létrehozott fájl elérési útját mutatja.

Értsük meg a következő példát.

Példa -

 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) 

Kimenet:

 D:Python ProjectNewFilehi.txt 

A shutil.copytree() függvény

Ez a módszer a teljes könyvtár replikálására szolgál. A forrásnál gyökerező teljes könyvtárfát másolja a célkönyvtárba. A célkönyvtár már nem jelenhet meg. Lássuk a következő szintaxist.

Szintaxis:

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

Paraméterek:

A fenti szintaxisban:

    src -A forráskönyvtár elérési útját mutatja.kéz -Megmutatja a célkönyvtár elérési útját.szimbolikus linkek (nem kötelező) -Ehhez a logikai értékek szükségesek – igaz és hamis. Attól függ, hogy az eredeti hivatkozások vagy hivatkozások metaadatai melyiket másolják át az új fába.figyelmen kívül hagyás (nem kötelező) -Alapértelmezés szerint None, de ha a figyelmen kívül hagyást átadja, akkor hívhatónak kell lennie, amely argumentumaként megkapja. A könyvtárat a copytree() látogatja meg.copy_function (opcionális) -A copy2 ennek a paraméternek az alapértelmezett értéke. A másolat() függvény paraméterként használható.ignore_dangling_symlinks (opcionális) -Ez a paraméter a kivétel felállítására szolgál, ha a szimbolikus hivatkozás által mutatott fájl nem létezik.
  • Azt a karakterláncot adja vissza, amely az újonnan létrehozott könyvtár elérési útját jelöli.

Példa -

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

Kimenet:

 Destination path: D:Python ProjectNewFolder 

A shutil.rmtree()

Ez a módszer a teljes címtárfa törlésére szolgál. Lássuk a következő szintaxist.

Szintaxis:

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

Paraméter-

A fenti szintaxisban -

java gyűjtőkeretrendszer
    pálya -A fájl elérési útját jelöli. Az elérési út-szerű objektum vagy karakterlánc vagy bájtos objektum.ignore_errors -Az eltávolítást a rendszer figyelmen kívül hagyja, ha ez az argumentum igaz.hiba -Ha ignore_errors hamis, az ilyen hibákat az onror által meghatározott kezelő meghívásával kezeljük.

Értsük meg a következő példát -

Példa -

 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) 

A fenti kód eltávolítja az adott könyvtárat.

A shutil.which() függvény

A shutil.which() A függvény egy olyan végrehajtható alkalmazás elérési útját kapja meg, amely az adott cmd meghívása esetén futna. Megkeresi a fájlt a megadott útvonalon. Lássuk a következő szintaxist.

Szintaxis:

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

Paraméterek

A fenti szintaxisban -

    cmd -Ez egy karakterlánc, amely a fájlt képviseli.mód -Meghatározza a fájl módját, amelyben a metódus végrehajtásra kerül.pálya -Ez a paraméter határozza meg a használandó elérési utat.
  • Ez a metódus visszaadja a végrehajtható alkalmazás elérési útját.

Értsük meg a következő példát.

Példa -

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

Kimenet:

 C:Pythonpython.EXE 

Megkeresi az adott fájlt a számítógépen, ha megtalálja a fájlt, akkor visszaadja a fájl elérési útját, ellenkező esetben a Nincs.