Python shutil
„Python shutil“ modulis leidžia kūrėjui labai lengvai naudoti failų objektus ir nesigilinant į tai, kaip viskas veikia po priedanga. Šis modulis iš esmės ištraukia žemo lygio failų objektų kūrimo ir valdymo semantiką, išvalo juos, kai tik bus baigtas, ir leidžia mums sutelkti dėmesį į programos verslo logiką. Čia pamatysime daug pavyzdžių, pradėkime.
Pavyzdžiai su Python shutil moduliu
Išnagrinėsime įvairius pavyzdžius, parodančius „Python“ naudojimą šliuzas modulį čia.
Failo kopijavimas
Su copyfile () funkcija šliuzas modulį, mes galime padaryti tikslią esamo failo kopiją bet kurioje mašinos vietoje. Pažvelkime į pavyzdinę programą, kad parodytume, kaip tai galima padaryti:
importuoti osimportuoti šleilą
file_directory = './ Failai '
spausdinti ('Failai prieš:', os.listdir (failo_katalogas))
šliuzas.copyfile ('./ Failai / labas.txt ','./ Failai / labas_ vėl.txt ')
spausdinti ('Failai po:', os.listdir (failo_katalogas))
Ką tik nukopijavome failą, esantį nurodytame kataloge, kad klonuotume failą tame pačiame kataloge. Štai ką mes grąžiname naudodami šią komandą:
„Python shutil“ failo kopija
Geras dalykas, susijęs su šia funkcija, yra tai, kad minėta funkcija taip pat nurodo naujo kuriamo failo pavadinimą.
Failų kopijavimas į kitą katalogą
Failą galima nukopijuoti į naują katalogą naudojant „shutil“ kopija () funkcija. Pažvelkime į tai:
importuoti osimportuoti šleilą
print ('Sukurti naują katalogą.„)
os.mkdir ('LinuxHint')
spausdinti ('Failai prieš:', os.listdir („LinuxHint“))
šliuzas.kopija ('./ Failai / labas.txt ',' LinuxHint ')
spausdinti ('Failai po:', os.listdir („LinuxHint“))
Pažiūrėkime šios komandos išvestį:
Kopijuojamas failas į naują katalogą
Atminkite, kad kai failas nukopijuojamas naudojant kopija () funkcija, taip pat klonuojami failo leidimai bet failo metaduomenys nekopijuojami. Tai reiškia, kad kai patikrinsite, kada buvo sukurtas šis failas, jis parodys naują laiką, kai paleidote šį scenarijų.
Failo kopijavimas naudojant metaduomenis
Paskutiniame skyriuje pamatėme, kaip galėtume padaryti failo kopiją. Ką daryti, jei norite sukurti tikslų failo kloną, kuris apima jo metaduomenų klonavimą, pvz., Kai failas buvo padarytas ir pan. Tai taip pat įmanoma, bet tai gali neveikti POSIX sistemoje. Pažvelkime į pavyzdį, kaip tai galima padaryti:
importuoti osimportuoti šleilą
importo laikas
new_directory = 'LinuxHint'
src_file = './ Failai / labas.txt '
dest_file = './ LinuxHint / labas.txt '
def failo_metaduomenys (failas):
stat_info = os.statistika (byla)
spausdinti ('Mode:', oct (stat_info.st_mode))
spausdinti ('Sukurta:', laikas.ctime (stat_info.st_ctime))
spausdinti ('Prieiga:', laikas.ctime (stat_info.st_atime))
spausdinti ('Modified:', laikas.ctime (stat_info.st_mtime))
os.mkdir (naujas_katalogas)
spausdinti ('Šaltinio failo metaduomenys:')
file_metadata (src_file)
šliuzas.copy2 (src_file, new_directory)
spausdinti ('Paskirties failo metaduomenys:')
file_metadata (dest_file)
Štai ką mes grąžiname naudodami šią komandą, kai tai vykdome POSIX sistemoje (metaduomenys nėra visiškai klonuojami):
Kopijuoti failą su metaduomenimis
Ne POSIX sistemose net sukurtas ir pasiektas laikas būtų tiksliai sutapęs.
Klonuojamas visas katalogas
Paskutiniame skyriuje matėme, kaip galėtume padaryti failo kopiją. Čia pamatysime, kaip rekursyviai galime klonuoti visą katalogą. Tai reiškia, kad jei kataloge, kurį norime klonuoti, yra kitas katalogas, jie taip pat bus klonuojami.
importo atspaudasimportuoti šleilą
importuoti os
src_directory = './ Failai '
paskirties_katalogas = './ „LinuxHint“
šliuzas.kopija medis (src_directory, dest_directory)
spausdinti ('Šaltinio turinys:')
pprint.pprint (os.listdir (src_directory))
spausdinti ('Paskirties turinys:')
pprint.pprint (os.listdir (adreso_katalogas))
Pažiūrėkime šios komandos išvestį:
Katalogo kopijavimas
Atkreipkite dėmesį, kad katalogas, kurį perduodame kopijai (), veikia kaip paskirties katalogas neturi būti prieš paleidžiant šią programą.
Katalogo trynimas
Katalogą ištrinti labai paprasta naudojant rmtree () funkcija modulyje. Pažiūrėkime, kaip ši funkcija veikia čia:
importo atspaudasimportuoti šleilą
importuoti os
delete_directory = 'LinuxHint'
dabartinis_katalogas = '."
spausdinti ('Turinys prieš pašalinimą:')
pprint.pprint (os.listdir (current_directory))
šliuzas.rmtree (ištrinti katalogą)
spausdinti ('Turinys po pašalinimo:')
pprint.pprint (os.listdir (current_directory))
Paleidus scenarijų, „LinuxHint“ katalogas ištrinamas kartu su turiniu. Štai ką mes grąžiname naudodami šią komandą:
Ištrinti katalogą
Failų paieška
Jei norite rasti failą, esantį jūsų kompiuteryje esančiame kintamajame PATH, galime naudoti kuri () funkcija rasti tą failą pagal pavadinimą. Pažvelkime į šios funkcijos demonstracinį pavyzdį:
importuoti šleiląspausdinti (shutil.kuris („bsondump“))
spausdinti (shutil.kuri („nerasta bylos“))
Štai ką mes grąžiname naudodami šią komandą:
Raskite failą PATH
Failų sistemos erdvės stebėjimas
Naudodami „shutil“ modulį, turime funkciją disk_usage (), per kurią taip pat galime gauti vietos diske informaciją apie savo mašiną. Pažvelkime į pavyzdį, kuriame šie duomenys rodomi žmonėms suprantamu būdu:
importuoti šleilątotal_b, used_b, free_b = shutil.disk_usage ('.„)
gb = 10 ** 9 # GB == gigabaitas
spausdinti ('Iš viso: : 6.2f GB '.formatas (viso_b / gb))
spausdinti ('Naudota: : 6.2f GB '.formatas (naudojamas_b / gb))
spausdinti ('Nemokama: : 6.2f GB '.formatas (laisvas_b / gb))
Štai ką mes grąžiname naudodami šią komandą:
Failų sistemos vietos paieška
Katalogų archyvavimas
Kaip paskutinį pavyzdį pamatysime, kaip galime archyvuoti katalogo „shutil“ modulį make_archive () funkcija. Pažvelkime į pavyzdinę programą:
importuoti šleiląimportuoti os
archyvo_katalogas = \
os.kelias.plėtiklis (os.kelias.prisijungti ('paskirties katalogo kelias', 'linuxhint'))
root_dir = os.kelias.plėtiklis (os.kelias.prisijungti ('~', '.ssh '))
šliuzas.make_archive (archyvo katalogas, 'gztar', root_dir)
Štai ką mes grąžiname naudodami šią komandą:
Archyvavimo katalogas
Jei išarchyvuosite TAR failą ir pažvelgsite, jame bus visas .ssh katalogo failus jame.
Išvada
Šioje pamokoje apžvelgėme, kaip lengvai valdome failų objektus naudodami aukšto lygio failų operacijas šliuzas modulis „Python“. Tokios operacijos kaip failo turinio kopijavimas, naujos failo kopijos kūrimas ir kt. atrodė lengvai naudojant šį modulį.