Python

shutil moodul Pythonis

shutil moodul Pythonis
Failihaldust ja failiobjektide käsitlemist peetakse üheks keerukamaks ülesandeks kõigis programmeerimiskeeltes. Mõni programmeerimiskeel pakub meile mõned tööriistad, mis hõlbustavad hõlpsasti kasutatavate funktsioonide ja liideste abil failikäitluse keerukaid osi. See on täpselt Pythoni oma Sulg moodul teeb samuti.

Python shutil

Pythoni shutil moodul võimaldab arendajal failiobjekte kasutada väga lihtsalt ja ilma, et läheks põhjalikumalt selle kohta, kuidas asjad teki all toimivad. See moodul abstraktselt eemaldab failiobjektide loomise ja haldamise madalama taseme semantika, puhastab need pärast kasutamist ja võimaldab meil keskenduda rakenduse äriloogikale. Näeme siin palju näiteid, alustame.

Näited Pythoni shutil mooduliga

Uurime erinevaid Pythoni kasutamist näitavaid näiteid Sulg moodul siin.

Faili kopeerimine

Koos copyfile () funktsiooni sisse Sulg mooduli abil saame olemasolevast failist täpse koopia teha kõikjal masinas. Vaatame näidisprogrammi, et näidata, kuidas seda saab teha:

impordi os
import sulgur
file_directory = './ Failid
print ('Failid enne:', os.listdir (faili kataloog))
Sulg.copyfile ('./ Failid / tere.txt ','./ Failid / tere_ uuesti.txt ')
print ('Failid pärast:', os.listdir (faili kataloog))

Kopeerisime just faili, mis asub antud kataloogis, et kloonida fail samasse kataloogi. Selle käsuga saame tagasi:

Pythoni silefaili koopia

Selle funktsiooni hea külg on see, et mainitud funktsioon sisestab ka uue loodava faili nime.

Failide kopeerimine teise kataloogi

Faili on võimalik kopeerida shutliga uude kataloogi koopia () funktsioon. Vaatame seda toimingus:

impordi os
import sulgur
print ('Uue kataloogi loomine.')
os.mkdir ('LinuxHint')
print ('Failid enne:', os.listdir ('LinuxHint'))
Sulg.copy ('./ Failid / tere.txt ',' LinuxHint ')
print ('Failid pärast:', os.listdir ('LinuxHint'))

Vaatame selle käsu väljundit:

Faili kopeerimine uude kataloogi

Pange tähele, et kui fail kopeeritakse, kasutades koopia () funktsioon, kloonitakse ka faili õigused kuid faili metaandmeid ei kopeerita. See tähendab, et kui kontrollite, millal see fail on tehtud, näitab see selle skripti käitamise värsket aega.

Faili kopeerimine metaandmetega

Viimases jaotises nägime, kuidas saaksime failist koopia teha. Mis siis, kui soovite teha failist täpse klooni, mis hõlmab nii metaandmete kloonimist kui ka faili tegemise ajal jne. Ka see on võimalik, aga see ei pruugi POSIX-põhises süsteemis töötada. Vaatame näidet selle kohta, kuidas seda saab teha:

impordi os
import sulgur
impordiaeg
new_directory = 'LinuxHint'
src_file = './ Failid / tere.txt '
dest_file = './ LinuxHint / tere.txt '
def faili_metaandmed (fail):
stat_info = os.stat (fail)
print ('Mode:', okt (stat_info.st_mode)
print ('Loodud:', aeg.ctime (stat_info.st_ctime))
print ('Juurdepääs:', aeg.ctime (stat_info.st_atime))
print ('Muudetud:', aeg.ctime (stat_info.st_mtime))
os.mkdir (uus_kataloog)
print ('Lähtefaili metaandmed:')
file_metadata (src_fail)
Sulg.copy2 (src_fail, uus_kataloog)
print ('Sihtfaili metaandmed:')
file_metadata (dest_file)

Selle käsku saame tagasi, kui käivitame selle POSIX-põhises süsteemis (metaandmeid pole täielikult kloonitud):

Kopeeri fail metaandmetega

POSIX-põhistel süsteemidel oleks isegi loodud ja juurdepääsetav aeg täpselt sobinud.

Kloonimine täielik kataloog

Viimases jaotises nägime, kuidas saaksime failist koopia teha. Siin näeme, kuidas saame tervikliku kataloogi rekursiivselt kloonida. See tähendab, et kui kataloogis, mida soovime kloonida, on veel üks kataloog, kloonitakse ka need.

impordi print
import sulgur
impordi os
src_directory = './ Failid '
dest_directory = './ LinuxHint '
Sulg.kopeerpuu (src_directory, dest_directory)
print ('Allika sisu:')
pprint.pprint (os.listdir (src_kataloog))
print ('Sihtkoha sisu:')
pprint.pprint (os.listdir (sihtkoha kataloog))

Vaatame selle käsu väljundit:

Kataloogi paljundamine

Pange tähele, et kataloog, mille edastame kopeerpuule (), toimib järgmiselt enne selle programmi käivitamist ei tohi sihtkataloogi olla.

Kataloogi kustutamine

Kataloogi kustutamine on rakendusega rmtree () funktsioon moodulis. Vaatame seda funktsiooni toimimas siin:

impordi print
import sulgur
impordi os
delete_directory = 'LinuxHint'
current_directory = '."
print ('Sisu enne eemaldamist:')
pprint.pprint (os.listdir (praegune_kataloog))
Sulg.rmtree (kataloogi kustutamine)
print ('Sisu pärast eemaldamist:')
pprint.pprint (os.listdir (praegune_kataloog))

Pärast skripti käivitamist, Linuxi vihje kataloog kustutatakse koos sisuga. Selle käsuga saame tagasi:

Kustuta kataloog

Failide leidmine

Kui soovite leida faili, mis on teie arvutis PATH muutuja juures, võime seda kasutada mis () funktsioon faili leidmiseks nime järgi. Vaatame selle funktsiooni tutvustusnäidet:

import sulgur
trükk (shutil.mis ('bsondump'))
trükk (shutil.mis ('faili ei leitud'))

Selle käsuga saame tagasi:

Leidke fail PATH-ist

Failisüsteemi ruumi jälgimine

Shutil mooduliga on meil funktsioon disk_usage (), mille kaudu saame teavet ka oma masina kohta kettaruumi kohta. Vaatame näidet, mis näitab neid andmeid inimesele loetaval viisil:

import sulgur
total_b, used_b, free_b = shutil.ketas_kasutus ('.')
gb = 10 ** 9 # GB == gigabaiti
print ('Kokku: : 6.2f GB '.vorming (kokku_b / gb))
print ('Kasutatud: : 6.2f GB '.vorming (kasutatud_b / gb))
print ('Tasuta: : 6.2f GB '.formaat (vaba_b / gb))

Selle käsuga saame tagasi:

Failisüsteemi ruumi leidmine

Kataloogide arhiveerimine

Viimase näitena näeme, kuidas saab arhiivida kataloogi sile moodulit make_archive () funktsioon. Vaatame näidisprogrammi:

import sulgur
impordi os
arhiivikataloog = \
os.tee.laiendaja (os.tee.liitu ('sihtkoha-kataloogi-tee', 'linuxhint'))
root_dir = os.tee.laiendaja (os.tee.liitu ('~', '.ssh '))
Sulg.make_archive (arhiivikataloog, 'gztar', juurkataloog)

Selle käsuga saame tagasi:

Kataloogi arhiveerimine

Kui tühistate TAR-faili ja vaatate seda, sisaldab see kõiki faile .ssh kataloogifailid selles.

Järeldus

Selles õppetükis vaatasime, kuidas saaksime failiobjekte hõlpsalt hallata kõrgetasemeliste failitoimingutega Sulg moodul Pythonis. Sellised toimingud nagu faili sisu kopeerimine, failist uue koopia loomine jne. tundus selle mooduliga lihtne.

Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...
Kuidas FPS-i suurendada Linuxis?
FPS tähistab Kaadrit sekundis. FPS-i ülesanne on mõõta kaadrisagedust video taasesitamisel või mängude esitamisel. Lihtsamalt öeldes nimetatakse iga s...