Python ZIP-fil med Exempel

⚡ Smart sammanfattning

Python skapar ZIP-arkiv med de inbyggda modulerna shutil och zipfile. Här lär du dig att zippa en hel katalog med make_archive(), zippa specifika filer med ZipFile och t.ex.tract, lista och läs arkivinnehåll.

  • 🗜️ make_archive(): shutil.make_archive() zippar en hel katalog till en .zip-fil.
  • 📄 ZipFile.write(): ZipFile.write() lägger till specifika filer i ett arkiv en i taget.
  • 📂 extraclång(): ZipFile.extractall() packar upp alla filer från ett arkiv till en mapp.
  • 📋 namnlista(): ZipFile.namelist() listar filnamnen i ett ZIP-arkiv.
  • 🤖 AI-hjälp: AI-verktyg som Copilot genererar postnummer och packar upp det direkt.

Python Zip fil

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)

Hur man zippar en hel katalog Python

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

Python Zip fil

Code Fö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

Python Zip fil

Nu kommer din archive.zip-fil att visas på ditt operativsystem (Windows explorer)

Python Zip fil

Steg 3) När du dubbelklickar på filen kommer du att se listan med alla filer där.

Python Zip fil

Hur man zippar specifika filer med ZipFile

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".

Python Zip fil

Code Fö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.

Python Zip fil

När du dubbelklickar på filen "testguru99.zip", öppnas ett annat fönster, och detta kommer att visa filerna som ingår i den.

Python Zip fil

Komplett Python Code att skapa en ZIP-fil

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")

Hur man exartracPacka upp en ZIP-fil i Python

För att packa upp ett arkiv, öppna det i läsläge med ZipFile och anropa extrachög() till extract varje fil, eller t.ex.tract() för att hämta ut en enskild medlem.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    myzip.extractall("extracted_files")

ExettracMetoden tall() skriver alla arkiverade filer till den mapp du skickar som ett argument.

Hur man listar filer i en ZIP-fil Archive

Du kan granska ett arkiv utan extracning det. Metoden namelist() returnerar namnen på varje fil som lagras i ZIP-filen.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    print(myzip.namelist())

Detta skriver ut en lista över filnamnen som finns i arkivet.

Hur man läser en fil inuti en ZIP-fil Archive

Du kan läsa en medlemsfil direkt från arkivet utan att packa upp denping den till disken med hjälp av open()-metoden i ZipFile.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    with myzip.open("guru99.txt") as f:
        print(f.read())

Detta är användbart när du bara behöver innehållet i en fil från ett stort arkiv.

Vanliga frågor

Använd shutil.make_archive(name, 'zip', root_dir) för att zippa en katalog, eller öppna en ZipFile i skrivläge och anropa write() för att lägga till specifika filer i arkivet.

shutil.make_archive() zippar en hel katalog i ett anrop, medan zipfile.ZipFile ger finare kontroll och låter dig lägga till, läsa eller utökatract enskilda filer i arkivet.

Öppna arkivet med ZipFile('file.zip', 'r') och anropa extractall('mapp') till extract allt, eller extract('namn') för att hämta en enskild fil från arkivet.

Öppna ZipFile i läsläge och anropa namelist(), som returnerar en lista över alla filnamn som lagras i arkivet utan ex.tracnågon av dem.

`with`-satsen stänger automatiskt arkivet när blocket slutar, även om ett fel uppstår, så du behöver inte anropa `close()` manuellt.

AI-assistenter som GitHub Copilot autokompletterar ZipFile- och make_archive()-anrop och genererar loopar som zippar eller packar upp många filer från en beskrivning i ett enkelt språk.

Ja. AI-drivna verktyg kan automatisera skrivning av säkerhetskopierings- och arkivskript, välja mellan shutil och zipfile, och lägga till felhantering för saknade filer eller korrupta arkiv.

Ja. Öppna ZipFile och använd sedan dess open()-metod på en medlemsfil för att läsa dess innehåll direkt, utan ex.tracöverföra hela arkivet till disk.

Sammanfatta detta inlägg med: