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 osimport 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 osimport 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 osimport 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 printimport 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 printimport 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 sulgurtrü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 sulgurtotal_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 sulgurimpordi 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.