Python ZIP-fil med Exempel
Python låter dig snabbt skapa zip/tar-arkiv.
Följande kommando kommer att zippa hela katalogen
shutil.make_archive(output_filename, 'zip', dir_name)
Följande kommando ger dig kontroll över de filer du vill arkivera
ZipFile.write(filename)
Här är stegen för att skapa zip-fil i Python
Steg 1) För att skapa en arkivfil från Python, se till att du har din importsats korrekt och i ordning. Här är importförklaringen för arkivet from shutil import make_archive
Kodförklaring
- Importera make_archive-klass från modul shutil
- Använd splitfunktionen för att dela upp katalogen och filnamnet från sökvägen till textfilens plats (guru99)
- Sedan anropar vi modulen "shutil.make_archive("guru99 archive, "zip", root_dir)" för att skapa arkivfil, som kommer att vara i zip-format
- Efter det skickar vi in rotkatalogen med saker vi vill ska bli zippade. Så allt i katalogen kommer att zippas
- När du kör koden kan du se att arkivets zip-fil skapas på höger sida av panelen.
Steg 2) När din arkivfil är skapad kan du högerklicka på filen och välja operativsystemet, så kommer det att visa dina arkivfiler i den som visas nedan
Nu kommer din archive.zip-fil att visas på ditt operativsystem (Windows explorer)
Steg 3) När du dubbelklickar på filen kommer du att se listan med alla filer där.
Steg 4) In Python vi kan ha mer kontroll över arkivet eftersom vi kan definiera vilken specifik fil som ska inkluderas under arkivet. I vårt fall kommer vi att inkludera två filer under arkiv "guru99.txt" och "guru99.txt.bak".
Kodförklaring
- Importera Zipfile-klass från zip-fil Python modul. Denna modul ger full kontroll över att skapa zip-filer
- Vi skapar en ny Zipfil med namn ("testguru99.zip, "w")
- Att skapa en ny Zipfile-klass kräver att du skickar in behörighet eftersom det är en fil, så du måste skriva information i filen som newzip
- Vi använde variabeln "newzip" för att referera till zip-filen vi skapade
- Med hjälp av skrivfunktionen på variabeln "newzip" lägger vi till filerna "guru99.txt" och "guru99.txt.bak" till arkivet
När du kör koden kan du se att filen skapas på höger sida av panelen med namnet "guru99.zip"
Anmärkningar: Här ger vi inget kommando för att "stänga" filen som "newzip.close" eftersom vi använder "With" scope lock, så när programmet faller utanför detta scope kommer filen att rensas upp och stängs automatiskt.
Steg 5) När du -> högerklicka på filen (testguru99.zip) och -> välj ditt operativsystem (Windows explorer), kommer den att visa arkivfilerna i mappen som visas nedan.
När du dubbelklickar på filen "testguru99.zip", öppnas ett annat fönster, och detta kommer att visa filerna som ingår i den.
Här är den fullständiga koden
Python 2 Exempel
import os import shutil from zipfile import ZipFile from os import path from shutil import make_archive def main(): # Check if file exists if path.exists("guru99.txt"): # get the path to the file in the current directory src = path.realpath("guru99.txt"); # rename the original file os.rename("career.guru99.txt","guru99.txt") # now put things into a ZIP archive root_dir,tail = path.split(src) shutil.make_archive("guru99 archive", "zip", root_dir) # more fine-grained control over ZIP files with ZipFile("testguru99.zip","w") as newzip: newzip.write("guru99.txt") newzip.write("guru99.txt.bak") if __name__== "__main__": main()
Python 3 Exempel
import os import shutil from zipfile import ZipFile from os import path from shutil import make_archive # Check if file exists if path.exists("guru99.txt"): # get the path to the file in the current directory src = path.realpath("guru99.txt"); # rename the original file os.rename("career.guru99.txt","guru99.txt") # now put things into a ZIP archive root_dir,tail = path.split(src) shutil.make_archive("guru99 archive","zip",root_dir) # more fine-grained control over ZIP files with ZipFile("testguru99.zip", "w") as newzip: newzip.write("guru99.txt") newzip.write("guru99.txt.bak")
Sammanfattning
- För att zippa hela katalogen använd kommandot "shutil.make_archive("namn",,"zip", root_dir)
- För att välja filerna att zippa använd kommandot "ZipFile.write(filename)"