Pythonova uzávierka
Modul Python shutil umožňuje vývojárovi veľmi ľahko a bez podrobností o tom, ako veci fungujú pod kryty, používať objekty súborov. Tento modul v zásade abstrahuje od sémantiky nízkej úrovne vytvárania a správy objektov súborov a ich čistenia, keď je ich používanie hotové, a umožňuje nám zamerať sa na obchodnú logiku aplikácie. Uvidíme tu veľa príkladov, začnime.
Príklady s modulom Python shutil
Budeme študovať rôzne príklady demonštrujúce použitie Pythonu uzáver modul tu.
Kopírovanie súboru
Vďaka copyfile () funkcia v uzáver modulu môžeme vytvoriť presnú kópiu existujúceho súboru kdekoľvek na stroji. Pozrime sa na ukážkový program, ktorý ukazuje, ako je to možné:
import osimport uzávierka
file_directory = './ Súbory '
tlač ('Súbory pred:', os.listdir (adresar_suboru))
uzáver.copyfile ('./ Súbory / ahoj.TXT', './ Files / hello_again.TXT')
tlač ('Súbory po:', os.listdir (adresar_suboru))
Práve sme skopírovali súbor, ktorý existuje v danom adresári, aby sme ho naklonovali do rovnakého adresára. S týmto príkazom sa dostaneme späť:
Kópia súboru python shutil
Dobré na tejto funkcii je, že uvedená funkcia berie ako vstup aj názov nového súboru, ktorý sa má vytvoriť.
Kopírovanie súborov do iného adresára
Je možné skopírovať súbor do nového adresára pomocou programu Shutil's copy () funkcia. Pozrime sa na to v akcii:
import osimport uzávierka
print ('Vytvorenie nového adresára.")
os.mkdir ('LinuxHint')
tlač ('Súbory pred:', os.listdir ('LinuxHint'))
uzáver.kópia ('./ Súbory / ahoj.txt ',' LinuxHint ')
print ('Súbory po:', os.listdir ('LinuxHint'))
Pozrime sa na výstup pre tento príkaz:
Kopíruje sa súbor do nového adresára
Upozorňujeme, že keď sa súbor kopíruje pomocou súboru copy () funkcia, povolenia súboru sú tiež klonované ale metaúdaje súboru sa nekopírujú. To znamená, že keď skontrolujete, kedy bol tento súbor vytvorený, zobrazí sa nový čas, kedy ste spustili tento skript.
Kopírovanie súboru s metadátami
V poslednej časti sme videli, ako môžeme vytvoriť kópiu súboru. Čo ak chcete vytvoriť presný klon súboru, ktorý zahŕňa klonovanie jeho metadát, rovnako ako pri vytváraní súboru atď. To je tiež možné, ale toto nemusí fungovať v systéme založenom na POSIX. Pozrime sa na príklad, ako to možno urobiť:
import osimport uzávierka
čas importu
new_directory = 'LinuxHint'
src_file = './ Súbory / ahoj.TXT'
dest_file = './ LinuxHint / ahoj.TXT'
def file_metadata (súbor):
stat_info = os.stat (súbor)
print ('Režim:', okt (stat_info.st_mode))
print ('Vytvorené:', čas.ctime (stat_info.st_ctime))
tlač ('Prístup:', čas.ctime (stat_info.st_atime))
tlač ('Upravené:', čas.ctime (stat_info.st_mtime))
os.mkdir (nový_adresár)
print ('Metadáta pre zdrojový súbor:')
file_metadata (src_file)
uzáver.copy2 (src_file, new_directory)
print ('Metadáta pre cieľový súbor:')
file_metadata (dest_file)
Toto je príkaz, ktorý dostaneme späť, keď ho spustíme v systéme založenom na POSIX (metadáta nie sú klonované úplne):
Skopírujte súbor s metadátami
V systémoch, ktoré nie sú založené na POSIX, by sa dokonca vytvorený a prístupný čas presne zhodoval.
Klonovanie celého adresára
V poslednej časti sme videli, ako môžeme vytvoriť kópiu súboru. Tu uvidíme, ako môžeme klonovať celý adresár rekurzívne. To znamená, že ak v adresári, ktorý chceme klonovať, existuje iný adresár, budú klonované tiež.
importovať tlačimport uzávierka
import os
src_directory = './ Súbory '
dest_directory = './ LinuxHint '
uzáver.copytree (src_directory, dest_directory)
print ('Obsah zdroja:')
pprint.pprint (os.listdir (src_directory))
print ('Obsah miesta určenia:')
pprint.pprint (os.listdir (cieľový_adresár))
Pozrime sa na výstup pre tento príkaz:
Duplikovanie adresára
Všimnite si, že adresár, ktorý odovzdávame copytree (), funguje ako cieľový adresár nesmie existovať skôr, ako spustíme tento program.
Vymazanie adresára
Vymazanie adresára je veľmi jednoduché pomocou rmtree () funkcia v module. Pozrime sa tu na túto funkciu v akcii:
importovať tlačimport uzávierka
import os
delete_directory = 'LinuxHint'
current_directory = '.„
print ('Obsah pred odstránením:')
pprint.pprint (os.listdir (aktualny_adresar))
uzáver.rmtree (adresár_mazania)
print ('Obsah po odstránení:')
pprint.pprint (os.listdir (aktualny_adresar))
Po spustení skriptu, LinuxHint adresár sa odstráni spolu s obsahom. S týmto príkazom sa dostaneme späť:
Odstrániť adresár
Hľadanie súborov
Ak chcete nájsť súbor, ktorý sa nachádza v premennej PATH na vašom počítači, môžeme použiť ktoré () nájsť tento súbor podľa názvu. Pozrime sa na ukážkový príklad tejto funkcie:
import uzávierkatlačiť (shutil.ktorý („bsondump“))
tlačiť (shutil.which ('no-file-found'))
S týmto príkazom sa dostaneme späť:
Nájdite súbor na PATH
Monitorovanie priestoru súborového systému
S modulom shutil máme funkciu disk_usage (), prostredníctvom ktorej môžeme získať informácie o mieste na disku aj o našom stroji. Pozrime sa na príklad, ktorý ukazuje tieto údaje ľudsky čitateľným spôsobom:
import uzávierkatotal_b, used_b, free_b = shutil.disk_usage ('.")
gb = 10 ** 9 # GB == gigabajt
print ('Celkom: : 6.2f GB '.formát (total_b / gb))
print ('Použité: : 6.2f GB '.formát (used_b / gb))
tlač („Zadarmo: : 6.2f GB '.formát (free_b / gb))
S týmto príkazom sa dostaneme späť:
Nájdenie priestoru súborového systému
Archivácia adresárov
Ako posledný príklad uvidíme, ako môžeme archivovať modul vypnutia adresára make_archive () funkcia. Pozrime sa na ukážkový program:
import uzávierkaimport os
archive_directory = \
os.cesta.expandér (os.cesta.join ('destination-directory-path', 'linuxhint'))
root_dir = os.cesta.expandér (os.cesta.pripojiť sa ('~', '.ssh '))
uzáver.make_archive (archívny_adresár, 'gztar', root_dir)
S týmto príkazom sa dostaneme späť:
Archivácia adresára
Ak zrušíte archiváciu súboru TAR a pozriete sa, bude obsahovať všetko .ssh adresárové súbory v ňom.
Záver
V tejto lekcii sme sa pozreli na to, ako môžeme ľahko spravovať objekty súborov so súborovými operáciami na vysokej úrovni uzáver modul v Pythone. Operácie ako kopírovanie obsahu súboru, vytváranie nových kópií súborov atď. vyzeral s týmto modulom ľahko.