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 osimporta š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 osimporta š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 osimporta š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 pprintsimporta š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 pprintsimporta š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 štilsizdruka (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 štilstotal_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 štilsimportē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.