Un fișier comprimat conține multe fișiere, directoare și subdirectoare. Multe aplicații sunt disponibile pentru a crea un fișier comprimat al oricărui fișier sau director mare și pentru a prelua fișiere sau directoare prin extragerea unui fișier comprimat. Atunci când dorim să transferăm orice fișier sau dosar de mari dimensiuni pe internet, atunci este mai bine să comprimăm conținutul înainte de transfer. Acest lucru face ca sarcina să fie mai rapidă. Puteți utiliza scripturi python pentru a comprima și extrage orice fișier sau director de mari dimensiuni. modulul zipfile din python este utilizat pentru a îndeplini această sarcină. Modul în care puteți utiliza python3 pentru a comprima orice fișier sau director este prezentat în acest tutorial folosind diverse exemple.
Crearea unui nou fișier numit ‘zipcode1.py’ și adăugarea următorului cod. modulul zipfile este importat pentru a comprima fișierul. temp.zip este atribuit ca nume de fișier zip cu modul de scriere și apoi, numele fișierului original, temp.txt și tipul de compresie sunt date ca parametri în metoda de scriere.
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
Executați scriptul
Dimensiunea fișierului temp.txt este de 27 de octeți, iar după compresie, dimensiunea fișierului temp.zip este de 2 octeți.
Exemplu-2: Comprimarea unui anumit director
Creați un nou fișier numit ‘zipcode2.py’ și adăugați următorul cod. Un director poate conține multe fișiere, foldere și subfoldere. Pentru a citi conținutul directorului, modulul os din python este importat cu modulul zipfile pentru a comprima directorul. În acest script, directorul mydir este utilizat pentru compresie.
import os
import zipfile
# Declară funcția care să returneze toate căile de acces la toate fișierele dintr-un anumit director
def retrieve_file_paths(dirName):
# stabilește variabila căile de acces la fișiere
filePaths =
# Citește toate listele de directoare, subdirectoare și fișiere
pentru rădăcină, directoare, fișiere în os.walk(dirName):
for filename in files:
# Creați calea completă a fișierelor folosind modulul os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# returnează toate căile de acces
return filePaths
# Declară funcția principală
def main():
# atribuie numele directorului de zippat
dir_name = ‘mydir’
# apelează funcția pentru a prelua toate fișierele și folderele din directorul atribuit
filePaths = retrieve_file_paths(dir_name)
# imprimă lista tuturor fișierelor care vor fi zippate
print(‘Următoarea listă de fișiere va fi zippată:’)
for fileName in filePaths:
print(fileName)
# scrierea fișierelor într-un fișier zip
zip_file = zipfile.ZipFile(dir_name+”.zip’, ‘w’)
cu zip_file:
# scrierea fiecărui fișier unul câte unul
pentru file din filePaths:
zip_file.write(file)
print(dir_name+’.zip file is created successfully!’)
# Apelarea funcției main
if __name__ == “__main__”:
main()
Executați scriptul
Dimensiunea lui mydir este de 21 de octeți, iar după compresie, dimensiunea lui mydir.zip este de 2 octeți.
Exemplu-3: Comprimarea unui director dat de un argument din linia de comandă
Crearea unui nou fișier numit ‘zipcode3.py’ și adăugarea următorului cod. Pentru a citi valoarea din linia de comandă, un alt modul python sys este importat împreună cu modulele os și zipfile.
import os
import sys
import zipfile
# Declară funcția pentru a returna toate căile de acces la fișiere dintr-un anumit director
def retrieve_file_paths(dirName):
# setează variabila căile de acces la fișiere
filePaths =
# Citește toate listele de directoare, subdirectoare și fișiere
pentru rădăcină, directoare, fișiere în os.walk(dirName):
for filename in files:
# Creați calea completă a fișierelor folosind modulul os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Declară funcția main
def main():
# Verifică dacă sunt date două argumente în momentul rulării scriptului
if len (sys.argv) != 2 :
print (“Ați introdus numele directorului de zippat”)
sys.exit (1)
# Setați numele directorului din argumentul de comandă
dir_name = sys.argv
# Setați numele fișierului zip
zipFileName = dir_name + “.zip”
# Apelați funcția pentru a prelua toate fișierele și folderele din directorul atribuit
filePaths = retrieve_file_paths(dir_name)
# tipăriți lista fișierelor care vor fi zipate
print(‘Următoarea listă de fișiere va fi zippată:’)
for fileName in filePaths:
print(fileName)
# scrieți fișierele și folderele într-un fișier zip
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
cu zip_file:
# scrieți fiecare fișier separat
pentru file din filePaths:
zip_file.write(file)
print(zipFileName+’ fișierul este creat cu succes!’)
# Apelarea funcției main
if __name__ == “__main__”:
main()
Executați scriptul
testul este dat ca nume de director în argumentul liniei de comandă. Dimensiunea testului este de 21 de octeți, iar după compresie, dimensiunea test.zip este de 2 octeți.
Sper că, acest tutorial vă va ajuta să folosiți python pentru a comprima orice fișier sau director.
.