Piton

shutil modul a Pythonban

shutil modul a Pythonban
A fájlkezelés és a fájlobjektumok kezelése az egyik legbonyolultabb feladatnak minden programozási nyelven. Egyes programozási nyelvek olyan eszközöket kínálnak számunkra, amelyek elválaszthatják a Fájlkezelés nehéz részeit a könnyen használható funkcióktól és az interfészektől. A Python pontosan ez shutil modul is.

Python shutil

A Python shutil modul lehetővé teszi a fejlesztő számára, hogy a fájlobjektumokat nagyon egyszerűen és anélkül dolgozza fel mélyebben, hogy miként működnek a takaró alatt. Ez a modul alapvetően elvonja a fájlobjektumok létrehozásának és kezelésének alacsony szintű szemantikáját, megtisztítja őket, ha a használat befejeződött, és lehetővé teszi számunkra, hogy az alkalmazás üzleti logikájára összpontosítsunk. Sok példát fogunk itt látni, kezdjük.

Példák Python shutil modullal

Különböző példákat fogunk tanulmányozni, amelyek bemutatják a Python használatát shutil modul itt.

Fájl másolása

A ... val fájl másolás, fájl másolása() funkció be shutil modul segítségével egy létező fájl pontos másolatát készíthetjük a gép bárhol. Nézzünk meg egy mintaprogramot, hogy bemutassuk, hogyan lehet ezt megtenni:

import os
import shutil
file_directory = './ Fájlok
print ('Fájlok előtt:', os.listdir (fájl_könyvtár))
shutil.fájl másolás, fájl másolása('./ Fájlok / szia.txt ','./ Fájlok / hello_again.txt ')
print ('Fájlok után:', os.listdir (fájl_könyvtár))

Csak átmásoltunk egy fájlt, amely az adott könyvtárban található, hogy a fájlt ugyanabba a könyvtárba klónozzuk. Íme, amit ezzel a paranccsal kapunk vissza:

Python shutil fájl másolat

Ebben a függvényben az a jó, hogy az említett függvény beírja a létrehozandó új fájl nevét is.

Fájlok másolása egy másik könyvtárba

A fájlokat egy új könyvtárba másolhatja a shutil-ekkel másolat() funkció. Nézzük meg működés közben:

import os
import shutil
print ('Új könyvtár létrehozása.')
os.mkdir ('LinuxHint')
print ('Fájlok előtt:', os.listdir ('LinuxHint'))
shutil.másolat('./ Fájlok / szia.txt ',' LinuxHint ')
print ('Fájlok után:', os.listdir ('LinuxHint'))

Lássuk a parancs kimenetét:

Fájl másolása egy új könyvtárba

Vegye figyelembe, hogy amikor egy fájlt a másolat() funkció, A fájl engedélyeit is klónozzák de a fájl metaadatait nem másoljuk. Ez azt jelenti, hogy amikor ellenőrzi, hogy ez a fájl mikor készült, akkor az megmutatja a friss időt, amikor futtatta ezt a szkriptet.

Fájl másolása metaadatokkal

Az utolsó részben láttuk, hogyan készíthetünk másolatot a fájlból. Mi van, ha egy fájl pontos klónját akarja elkészíteni, amely magában foglalja a metaadatainak klónozását, például a fájl készítésekor stb. Ez is lehetséges, de ez lehet, hogy nem működik POSIX alapú rendszeren. Nézzünk meg egy példát arra, hogyan lehet ezt megtenni:

import os
import shutil
import idő
new_directory = 'LinuxHint'
src_file = './ Fájlok / szia.txt '
dest_file = './ LinuxHint / hello.txt '
def file_metadata (fájl):
stat_info = os.stat (fájl)
print ('Mode:', okt (stat_info.st_mode))
print ('Létrehozva:', idő.ctime (stat_info.st_ctime))
nyomtatás ('Hozzáférés:', idő.ctime (stat_info.st_atime))
nyomtatás ('Módosítva:', idő.ctime (stat_info.st_mtime))
os.mkdir (új_könyvtár)
print ('Forrásfájl metaadatai:')
file_metadata (src_file)
shutil.copy2 (src_fájl, új_könyvtár)
print ('Célfájl metaadatai:')
file_metadata (dest_file)

Íme, mit kapunk vissza ezzel a paranccsal, amikor ezt POSIX alapú rendszeren futtatjuk (a metaadatok nincsenek teljesen klónozva):

Fájl másolása metaadatokkal

A nem POSIX alapú rendszereken még a létrehozott és elérett idő is pontosan megfelelt volna.

A teljes könyvtár klónozása

Az utolsó részben láttuk, hogyan készíthetünk másolatot a fájlból. Itt meglátjuk, hogyan klónozhatunk egy komplett könyvtárat rekurzív módon. Ez azt jelenti, hogy ha egy másik könyvtár létezik a klónozni kívánt könyvtárban, azokat is klónozni fogjuk.

import pprint
import shutil
import os
src_directory = './ Fájlok
dest_directory = './ LinuxHint '
shutil.másolatfa (src_könyvtár, célkönyvtár)
nyomtatás ('A forrás tartalma:')
pprint.pprint (os.listdir (src_könyvtár))
nyomtatás ('A rendeltetési hely tartalma:')
pprint.pprint (os.listdir (cím_könyvtár))

Lássuk a parancs kimenetét:

Könyvtár másolása

Ne feledje, hogy a könyvtár, amelyet átadunk a copytree () -nek, a következőképpen működik a célkönyvtár nem létezhet a program futtatása előtt.

Könyvtár törlése

A könyvtár törlése nagyon egyszerű a rmtree () funkció a modulban. Lássuk itt ezt a funkciót működés közben:

import pprint
import shutil
import os
delete_directory = 'LinuxHint'
current_directory = '."
nyomtatás ('Tartalom eltávolítás előtt:')
pprint.pprint (os.listdir (jelenlegi_könyvtár))
shutil.rmtree (könyvtár törlése)
nyomtatás ('Tartalom eltávolítás után:')
pprint.pprint (os.listdir (jelenlegi_könyvtár))

A szkript futtatása után, LinuxHint könyvtár törlésre kerül a tartalommal együtt. Íme, amit ezzel a paranccsal kapunk vissza:

Könyvtár törlése

Fájlok keresése

Ha olyan fájlt szeretne találni, amely megtalálható a számítógép PATH változójában, használhatjuk a melyik() funkcióval megkeresheti a fájlt név szerint. Nézzünk meg egy bemutató példát ehhez a funkcióhoz:

import shutil
nyomtatás (shutil.amely ('bsondump'))
nyomtatás (shutil.amely ("nincs fájl-talált"))

Íme, amit ezzel a paranccsal kapunk vissza:

Fájl keresése a PATH oldalon

Fájlrendszer tér figyelése

A shutil modullal rendelkezünk egy disk_usage () függvénnyel, amelyen keresztül információkat kaphatunk lemezünkről a gépünkről is. Nézzünk meg egy példát, amely ezeket az adatokat ember által olvasható módon mutatja:

import shutil
total_b, used_b, free_b = shutil.lemez használat('.')
gb = 10 ** 9 # GB == gigabájt
nyomtatás ('Összesen: : 6.2f GB '.formátum (összesen_b / gb))
print ('Használt: : 6.2f GB '.formátum (használt_b / gb))
nyomtatás ('Ingyenes: : 6.2f GB '.formátum (szabad_b / gb))

Íme, amit ezzel a paranccsal kapunk vissza:

A fájlrendszer terének megkeresése

Könyvtárak archiválása

Utolsó példaként meglátjuk, hogyan archiválhatunk egy könyvtár slid modult make_archive () funkció. Nézzük meg a mintaprogramot:

import shutil
import os
archív_könyvtár = \
os.pálya.tágító (os.pálya.join ('cél-könyvtár-útvonal', 'linuxhint'))
root_dir = os.pálya.tágító (os.pálya.csatlakozzon ('~', '.ssh '))
shutil.make_archive (archív_könyvtár, 'gztar', root_dir)

Íme, amit ezzel a paranccsal kapunk vissza:

Könyvtár archiválása

Ha visszavonja a TAR fájl archiválását, és megnézi, akkor az az összes fájlt tartalmazza .ssh könyvtár fájlokat.

Következtetés

Ebben a leckében megvizsgáltuk, hogyan kezelhetjük a fájlobjektumokat magas szintű fájlműveletekkel egyszerűen shutil modul a Pythonban. Olyan műveletek, mint a fájl tartalmának másolása, a fájl új másolatának létrehozása stb. könnyűnek tűnt ezzel a modullal.

Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...
Unity3D bemutató
Bevezetés a Unity 3D-be Az Unity 3D egy erőteljes játékfejlesztő motor. Ez több platformon keresztül lehetővé teszi játékok, mobil, webes, asztali és ...