Python

shutil modulis Python

shutil modulis Python
Failu pārvaldība un failu objektu apstrāde tiek uzskatīta par vienu no viltīgākajiem uzdevumiem visās programmēšanas valodās. Dažas programmēšanas valodas nodrošina mūs ar dažiem rīkiem, kas attīra failu apstrādes sarežģītās daļas ar viegli lietojamām funkcijām un saskarnēm. Tas ir tieši tas, ko Python štils modulis tāpat.

Python shutil

Python shutil modulis ļauj izstrādātājam ļoti viegli izmantot failu objektus un neiedziļinoties sīkāk par to, kā lietas darbojas zem segas. Šis modulis būtībā attēlo faila objektu izveidošanas un pārvaldīšanas zemā līmeņa semantiku, tos attīra, tiklīdz to lietošana ir pabeigta, un ļauj mums koncentrēties uz lietojumprogrammas biznesa loģiku. Mēs šeit redzēsim daudz piemēru, sāksim darbu.

Piemēri ar Python shutil moduli

Mēs pētīsim dažādus piemērus, kas demonstrē Python lietošanu štils modulis šeit.

Faila kopēšana

Ar copyfile () darbojas štils moduli, mēs varam izgatavot precīzu esoša faila kopiju jebkur mašīnā. Apskatīsim programmas paraugu, lai parādītu, kā to var izdarīt:

importēt os
importa štils
file_directory = './ Faili
print ('Faili pirms:', os.listdir (file_directory))
štils.copyfile ('./ Faili / sveiki.txt ','./ Faili / sveiki_atkal.txt ')
print ('Faili pēc:', os.listdir (file_directory))

Mēs tikko nokopējām failu, kas atrodas dotajā direktorijā, lai klonētu failu tajā pašā direktorijā. Lūk, ko mēs atgūsim ar šo komandu:

Python shutil faila kopija

Laba lieta par šo funkciju ir tā, ka minētā funkcija kā ievades vārdu izmanto arī izveidojamo jauno failu.

Failu kopēšana uz citu direktoriju

Ir iespējams kopēt failu uz jaunu direktoriju, izmantojot shut's kopija () funkciju. Apskatīsim to darbībā:

importēt os
importa štils
print ('Jauna direktorija izveidošana.')
os.mkdir ('LinuxHint')
print ('Faili pirms:', os.listdir ('LinuxHint'))
štils.kopija ('./ Faili / sveiki.txt ',' LinuxHint ')
print ('Faili pēc:', os.listdir ('LinuxHint'))

Apskatīsim šīs komandas izvadi:

Faila kopēšana uz jaunu direktoriju

Ņemiet vērā, ka, kopējot failu, izmantojot kopija () funkciju, tiek klonētas arī faila atļaujas bet faila metadati netiek kopēti. Tas nozīmē, ka, pārbaudot, kad šis fails tika izveidots, tas parādīs jauno laiku, kad palaidāt šo skriptu.

Faila kopēšana ar metadatiem

Pēdējā sadaļā mēs redzējām, kā mēs varētu izveidot faila kopiju. Ko darīt, ja vēlaties izveidot precīzu faila klonu, kas ietver tā metadatu klonēšanu, piemēram, kad fails tika izveidots utt. Arī tas ir iespējams, bet tas var nedarboties sistēmā, kuras pamatā ir POSIX. Apskatīsim piemēru, kā to izdarīt:

importēt os
importa štils
importa laiks
new_directory = 'LinuxHint'
src_file = './ Faili / sveiki.txt '
dest_file = './ LinuxHint / labdien.txt '
def faila_metadati (fails):
stat_info = os.stat (fails)
drukāt ('Mode:', okt (stat_info.st_mode))
drukāt ('Izveidots:', laiks.ctime (stat_info.st_ctime))
drukāt ('Piekļuve:', laiks.ctime (stat_info.st_atime))
drukāt ('Pārveidots:', laiks.ctime (stat_info.st_mtime))
os.mkdir (new_directory)
drukāt ('Avota faila metadati:')
file_metadata (src_file)
štils.copy2 (src_file, new_directory)
print ('Mērķa faila metadati:')
file_metadata (dest_file)

Lūk, ko mēs atgūsim ar šo komandu, palaižot to sistēmā, kas balstīta uz POSIX (metadati netiek pilnībā klonēti):

Kopēt failu ar metadatiem

Sistēmās, kuru pamatā nav POSIX, pat izveidotais un pieejamais laiks būtu precīzi sakritis.

Pilna direktorija klonēšana

Pēdējā sadaļā mēs redzējām, kā mēs varētu izveidot faila kopiju. Šeit mēs redzēsim, kā mēs varam klonēt pilnu direktoriju rekursīvi. Tas nozīmē, ka, ja direktorijā, kuru vēlamies klonēt, pastāv vēl viens katalogs, tiks klonēti arī tie.

importa pprints
importa štils
importēt os
src_directory = './ Faili
dest_directory = './ LinuxHint '
štils.kopiju koks (src_directory, dest_directory)
drukāt ('Avota saturs:')
nospiedums.pprint (os.listdir (src_directory))
drukāt ('Galamērķa saturs:')
nospiedums.pprint (os.listdir (dest_directory))

Apskatīsim šīs komandas izvadi:

Direktorija kopēšana

Ņemiet vērā, ka katalogs, kuru mēs nododam kopējam kokam (), darbojas kā galamērķa direktorija nedrīkst būt pirms šīs programmas palaišanas.

Kataloga dzēšana

Direktorija dzēšana ir ļoti vienkārša rmtree () funkcija modulī. Apskatīsim šo funkciju darbībā šeit:

importa pprints
importa štils
importēt os
delete_directory = 'LinuxHint'
current_directory = '."
drukāt ('Saturs pirms noņemšanas:')
nospiedums.pprint (os.listdir (pašreizējais_direktorijs))
štils.rmtree (dzēst_direktoriju)
drukāt ('Saturs pēc noņemšanas:')
nospiedums.pprint (os.listdir (pašreizējais_direktorijs))

Pēc skripta palaišanas, LinuxHint katalogs tiek izdzēsts kopā ar saturu. Lūk, ko mēs atgūsim ar šo komandu:

Dzēst direktoriju

Failu atrašana

Ja vēlaties atrast failu, kas atrodas jūsu datora mainīgajā PATH, mēs varam izmantot kura () funkcija, lai atrastu šo failu pēc nosaukuma. Apskatīsim šīs funkcijas demonstrācijas piemēru:

importa štils
izdruka (shutil.kas ('bsondump'))
izdruka (shutil.kas (“no-file-found”))

Lūk, ko mēs atgūsim ar šo komandu:

Atrodiet failu PATH

Failu sistēmas telpas monitorings

Izmantojot shutil moduli, mums ir funkcija disk_usage (), caur kuru mēs varam iegūt informāciju par diska vietu arī par mūsu mašīnu. Apskatīsim piemēru, kas parāda šos datus cilvēkiem lasāmā veidā:

importa štils
total_b, used_b, free_b = shutil.disk_usage ('.')
gb = 10 ** 9 # GB == gigabaiti
drukāt ('Kopā: : 6.2f GB '.formāts (kopā_b / gb))
drukāt ('Lietots: : 6.2f GB '.formāts (izmantots_b / gb))
drukāt ('Bezmaksas: : 6.2f GB '.formāts (bezmaksas_b / gb))

Lūk, ko mēs atgūsim ar šo komandu:

Failu sistēmas vietas atrašana

Katalogu arhivēšana

Kā pēdējo piemēru mēs redzēsim, kā mēs varam arhivēt direktorijas slēdža moduli make_archive () funkciju. Apskatīsim programmas paraugu:

importa štils
importēt os
arhīva_katalogs = \
os.ceļš.paplašinātājs (os.ceļš.pievienoties ('destination-directory-path', 'linuxhint'))
root_dir = os.ceļš.paplašinātājs (os.ceļš.pievienoties ('~', '.ssh '))
štils.make_archive (arhīva_katalogs, 'gztar', root_dir)

Lūk, ko mēs atgūsim ar šo komandu:

Arhivēšanas direktorijs

Ja atarhivējat TAR failu un paskatāties, tajā būs viss .ssh direktoriju faili tajā.

Secinājums

Šajā nodarbībā mēs apskatījām, kā mēs varam viegli pārvaldīt failu objektus ar augsta līmeņa failu operācijām štils modulis Python. Darbības, piemēram, faila satura kopēšana, jaunas faila kopijas izveidošana utt. ar šo moduli izskatījās viegli.

Kā izstrādāt spēli Linux
Pirms desmit gadiem maz Linux lietotāju varētu paredzēt, ka viņu iecienītā operētājsistēma kādu dienu būs populāra spēļu platforma komerciālām videosp...
Komerciālo spēļu dzinēju atvērtā koda porti
Bezmaksas, atvērtā koda un starpplatformu spēļu dzinēju atpūtu var izmantot, lai spēlētu vecos, kā arī dažus no diezgan nesenajiem spēļu nosaukumiem. ...
Labākās komandrindas spēles Linux
Komandrinda nav tikai lielākais sabiedrotais, lietojot Linux, bet tā var būt arī izklaides avots, jo to var izmantot, lai spēlētu daudzas jautras spēl...