1. piemērs: Viena faila saspiešana
Izveidojiet jaunu failu ar nosaukumupasta indekss.py ' un pievienojiet šādu kodu. zipfails modulis tiek importēts, lai saspiestu failu. temp.zip tiek piešķirts kā zip faila nosaukums ar rakstīšanas režīmu un nākamais - sākotnējais faila nosaukums, temp.txt un saspiest tips rakstīšanas metodē tiek norādīti kā parametri.
importēt ZIP failuzip_file = zipfile.ZipFile ('temp.zip ',' w ')
zip_file.rakstīt ('temp.txt ', compress_type = zipfile.ZIP_DEFLATED)
zip_file.aizvērt ()
Palaidiet skriptu
$ python3 pasta indekss1.pyIzmērs temp.txt ir 27 baiti un pēc saspiešanas - temp.zip ir 2 baiti.
2. piemērs: konkrēta direktorija saspiešana
Izveidojiet jaunu failu ar nosaukumupasta indekss2.py ' un pievienojiet šādu kodu. Katalogā var būt daudz failu, mapju un apakšmapju. Lai lasītu direktorija saturu, os modulis python tiek importēts ar zipfails modulis, lai saspiestu direktoriju. Šajā scenārijā, mydir direktoriju izmanto saspiešanai.
# importēt nepieciešamos moduļusimportēt os
importēt ZIP failu
# Deklarējiet funkciju, lai atgrieztu visus konkrētā direktorija failu ceļus
def retrieve_file_paths (dirName):
# iestatīšanas faila ceļu mainīgais
filePaths = []
# Lasiet visus direktorijus, apakšdirektorijus un failu sarakstus
saknēm, direktorijiem, failiem os.staigāt (dirName):
faila nosaukumam failos:
# Izveidojiet pilnu faila ceļu, izmantojot os moduli.
filePath = os.ceļš.pievienoties (sakne, faila nosaukums)
filePaths.pievienot (filePath)
# atgriezt visus ceļus
atgriezt filePaths
# Paziņojiet galveno funkciju
def main ():
# Piešķiriet direktorija nosaukumu saspiest
dir_name = 'mydir'
# Izsauciet funkciju, lai izgūtu visus piešķirtā direktorija failus un mapes
filePaths = retrieve_file_paths (dir_name)
# visu saspiesto failu saraksta drukāšana
drukāt ('Šāds failu saraksts tiks saspiests:')
failam FileName mapē filePaths:
drukāt (fileName)
# failu rakstīšana ZIP failā
zip_file = zipfile.ZipFile (dir_name + '.zip ',' w ')
ar zip_file:
# rakstot katru failu pa vienam
failam failā pathPaths:
zip_file.rakstīt (fails)
drukāt (dir_name + '.zip fails ir veiksmīgi izveidots!')
# Izsauciet galveno funkciju
ja __nosaukums == "__main__":
galvenais ()
Palaidiet skriptu
$ python3 pasta indekss2.pyIzmērs mydir ir 21 baits un pēc saspiešanas - mydir.zip ir 2 baiti.
3. piemērs: direktorijas saspiešana, izmantojot komandrindas argumentu
Izveidojiet jaunu failu ar nosaukumupasta indekss3.py ' un pievienojiet šādu kodu. Lai nolasītu komandrindas vērtību, vēl viens python modulis sys tiek importēts ar os un zipfails moduļi.
# importēt nepieciešamos moduļusimportēt os
importa sys
importēt ZIP failu
# Deklarējiet funkciju, lai atgrieztu visus konkrētā direktorija failu ceļus
def retrieve_file_paths (dirName):
# iestatīšanas faila ceļu mainīgais
filePaths = []
# Lasiet visus direktorijus, apakšdirektorijus un failu sarakstus
saknēm, direktorijiem, failiem os.staigāt (dirName):
faila nosaukumam failos:
# Izveidojiet pilnu faila ceļu, izmantojot os moduli.
filePath = os.ceļš.pievienoties (sakne, faila nosaukums)
filePaths.pievienot (filePath)
# atgriezt visus ceļus
atgriezt filePaths
# Paziņojiet galveno funkciju
def main ():
# Pārbaudiet, vai skripta palaišanas laikā ir norādīti divi argumenti
ja len (sys.argv) != 2:
drukāt ("Jums ir jāievada direktorija nosaukums, lai izveidotu ZIP kodu")
sys.izeja (1)
# Iestatiet direktorijas nosaukumu no komandas argumenta
dir_name = sys.argv [1]
# Iestatiet zip faila nosaukumu
zipFileName = dir_name + ".zip "
# Izsauciet funkciju, lai izgūtu visus piešķirtā direktorija failus un mapes
filePaths = retrieve_file_paths (dir_name)
# izdrukāt saspiesto failu sarakstu
drukāt ('Šāds failu saraksts tiks saspiests:')
failam FileName mapē filePaths:
drukāt (fileName)
# rakstīt failus un mapes zip failā
zip_file = zipfile.ZipFile (zipFileName, 'w')
ar zip_file:
# rakstiet katru failu atsevišķi
failam failā pathPaths:
zip_file.rakstīt (fails)
print (zipFileName + 'fails ir veiksmīgi izveidots!')
# Izsauciet galveno funkciju
ja __nosaukums == "__main__":
galvenais ()
Palaidiet skriptu
$ python3 pasta indekss3.pypārbaude tiek norādīts kā direktorijas nosaukums komandrindas argumentā. Izmērs pārbaude ir 21 baits un pēc saspiešanas - pārbaude.zip ir 2 baiti.
Es ceru, ka šī apmācība palīdzēs jums izmantot pitonu jebkura faila vai direktorija saspiešanai.