Skompresowany plik zawiera wiele plików, katalogów i podkatalogów. Wiele aplikacji są dostępne do tworzenia pliku skompresowanego dowolnego dużego pliku lub katalogu i odzyskać pliki lub foldery przez rozpakowanie skompresowanego pliku. Kiedy chcemy przenieść dowolny duży lub folder przez Internet, to lepiej jest skompresować zawartość przed przeniesieniem. To sprawia, że zadanie jest szybsze. Możesz użyć skryptów pythona do kompresji i rozpakowania dowolnego dużego pliku lub katalogu. moduł zipfile pythona jest używany do wykonania tego zadania. Jak można używać python3 do kompresji dowolnego pliku lub katalogu jest pokazane w tym samouczku przy użyciu różnych przykładów.
Utwórz nowy plik o nazwie ‘zipcode1.py’ i dodaj następujący kod. moduł zipfile jest importowany do kompresji pliku. temp.zip jest przypisany jako nazwa pliku zip z trybem zapisu, a następnie oryginalna nazwa pliku, temp.txt i typ kompresji są podane jako parametry w metodzie zapisu.
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
Uruchom skrypt
Rozmiar pliku temp.txt wynosi 27 bajtów, a po kompresji rozmiar pliku temp.zip wynosi 2 bajty.
Przykład-2: Kompresja określonego katalogu
Utwórz nowy plik o nazwie ‘zipcode2.py’ i dodaj następujący kod. Katalog może zawierać wiele plików, folderów i podfolderów. Aby odczytać zawartość katalogu, moduł os pythona jest importowany wraz z modułem zipfile do kompresji katalogu. W tym skrypcie do kompresji używany jest katalog mydir.
import os
import zipfile
# Zadeklaruj funkcję zwracającą wszystkie ścieżki do plików w danym katalogu
def retrieve_file_paths(dirName):
# ustaw zmienną ścieżki do plików
filePaths =
# odczytaj wszystkie katalogi, podkatalogi i listy plików
dla root, katalogów, plików w os.walk(dirName):
for filename in files:
# Utwórz pełną ścieżkę plików używając modułu os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# zwróć wszystkie ścieżki
return filePaths
# Zadeklaruj funkcję main
def main():
# Przypisujemy nazwę katalogu do zip
dir_name = ‘mydir’
# Wywołujemy funkcję pobierającą wszystkie pliki i katalogi przypisanego katalogu
filePaths = retrieve_file_paths(dir_name)
# drukujemy listę wszystkich plików do zripowania
print(‘Następująca lista plików zostanie zripowana:’)
for fileName in filePaths:
print(fileName)
# zapisywanie plików do pliku zip
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
z zip_file:
# zapisywanie każdego pliku po kolei
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip file is created successfully!’)
# Wywołaj funkcję main
if __name__ == “__main__”:
main()
Uruchom skrypt
Rozmiar mydir wynosi 21 bajtów, a po kompresji rozmiar mydir.zip wynosi 2 bajty.
Przykład-3: Kompresja katalogu podanego przez argument wiersza poleceń
Utwórz nowy plik o nazwie ‘zipcode3.py’ i dodaj do niego następujący kod. Aby odczytać wartość z wiersza poleceń, inny pythonowy moduł sys jest importowany wraz z modułami os i zipfile.
import os
import sys
import zipfile
# Zadeklaruj funkcję zwracającą wszystkie ścieżki do plików w danym katalogu
def retrieve_file_paths(dirName):
# ustaw zmienną ścieżek do plików
filePaths =
# Odczytaj wszystkie katalogi, podkatalogi i listy plików
for root, directories, files in os.walk(dirName):
for filename in files:
# Utwórz pełną ścieżkę plików za pomocą modułu os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# return all paths
return filePaths
# Zadeklaruj funkcję main
def main():
# Sprawdź czy dwa argumenty są podane w czasie uruchamiania skryptu
if len (sys.argv) != 2 :
print (“You have enter the name of the directory to zip”)
sys.exit (1)
# Ustaw nazwę katalogu z argumentu polecenia
dir_name = sys.argv
# Ustaw nazwę pliku zip
zipFileName = dir_name + “.zip”
# Wywołaj funkcję, aby pobrać wszystkie pliki i foldery z przypisanego katalogu
filePaths = retrieve_file_paths(dir_name)
# wypisz listę plików do zripowania
print(‘The following list of files will be zipped:’)
for fileName in filePaths:
print(fileName)
# zapisz pliki i foldery do pliku zip
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
with zip_file:
# write each file seperately
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ file is created successfully!’)
# Wywołaj funkcję main
if __name__ == “__main__”:
main()
Uruchom skrypt
test jest podany jako nazwa katalogu w argumencie wiersza poleceń. Rozmiar testu wynosi 21 bajtów, a po kompresji rozmiar pliku test.zip wynosi 2 bajty.
Mam nadzieję, że ten poradnik pomoże Ci w użyciu pythona do kompresji dowolnego pliku lub katalogu.
.