Python

shutil modul v Pythone

shutil modul v Pythone
Správa súborov a manipulácia so súborovými objektmi sa považujú za jednu z najnáročnejších úloh vo všetkých programovacích jazykoch. Niektoré programovacie jazyky nám poskytujú niektoré nástroje, ktoré abstrahujú od zložitých častí manipulácie so súbormi pomocou ľahko použiteľných funkcií a rozhraní. To je presne to, čo Python uzáver modul tiež.

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 os
import 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 os
import 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 os
import 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ávierka
tlač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ávierka
total_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ávierka
import 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.

Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...