Python Αρχείο ZIP με Παράδειγμα

⚡ Έξυπνη Σύνοψη

Python δημιουργεί αρχεία ZIP με τις ενσωματωμένες ενότητες shutil και zipfile. Εδώ θα μάθετε να συμπιέζετε έναν ολόκληρο κατάλογο χρησιμοποιώντας το make_archive(), να συμπιέζετε συγκεκριμένα αρχεία με το ZipFile και π.χ.tract, λίστα και ανάγνωση περιεχομένων αρχείου.

  • 🗜️ make_archive(): Η shutil.make_archive() συμπιέζει έναν ολόκληρο κατάλογο σε ένα αρχείο .zip.
  • 📄 ZipFile.write(): Η συνάρτηση ZipFile.write() προσθέτει συγκεκριμένα αρχεία σε ένα αρχείο ένα προς ένα.
  • 📂 extracψηλός(): ZipFile.extracΗ tall() αποσυμπιέζει κάθε αρχείο από ένα αρχείο σε έναν φάκελο.
  • 📋 λίστα ονομάτων(): Η συνάρτηση ZipFile.namelist() παραθέτει τα ονόματα αρχείων μέσα σε ένα αρχείο ZIP.
  • 🤖 Βοήθεια με την Τεχνητή Νοημοσύνη: Εργαλεία τεχνητής νοημοσύνης όπως το Copilot δημιουργούν ταχυδρομικό κώδικα και αποσυμπιέζουν τον ταχυδρομικό κώδικα άμεσα.

Python Αρχείο ZIP

Python σας επιτρέπει να δημιουργείτε γρήγορα αρχεία zip/tar.

Η ακόλουθη εντολή θα κάνει zip ολόκληρο τον κατάλογο

shutil.make_archive(output_filename, 'zip', dir_name)

Η παρακάτω εντολή σάς δίνει τον έλεγχο των αρχείων που θέλετε να αρχειοθετήσετε

ZipFile.write(filename)

Πώς να συμπιέσετε ολόκληρο τον κατάλογο σε zip Python

Ακολουθούν τα βήματα για τη δημιουργία αρχείου Zip Python

Βήμα 1) Για να δημιουργήσετε ένα αρχείο αρχειοθέτησης από Python, βεβαιωθείτε ότι έχετε τη δήλωση εισαγωγής σωστή και με τάξη. Εδώ είναι η δήλωση εισαγωγής για το αρχείο from shutil import make_archive

Python Αρχείο ZIP

Code εξήγηση

  • Εισαγωγή κλάσης make_archive από τη λειτουργική μονάδα shutil
  • Χρησιμοποιήστε τη συνάρτηση διαχωρισμού για να διαχωρίσετε τον κατάλογο και το όνομα του αρχείου από τη διαδρομή προς τη θέση του αρχείου κειμένου (guru99)
  • Στη συνέχεια, καλούμε το module "shutil.make_archive("guru99 archive, "zip", root_dir)" για να δημιουργήσουμε αρχείο αρχειοθέτησης, το οποίο θα είναι σε μορφή zip
  • Στη συνέχεια περνάμε στον ριζικό κατάλογο των πραγμάτων που θέλουμε να συμπιεστούν. Έτσι, όλα στον κατάλογο θα είναι συμπιεσμένα
  • Όταν εκτελείτε τον κώδικα, μπορείτε να δείτε ότι το αρχείο zip αρχείου δημιουργείται στη δεξιά πλευρά του πίνακα.

Βήμα 2) Μόλις γίνει το αρχείο αρχειοθέτησής σας, μπορείτε να κάνετε δεξί κλικ στο αρχείο και να επιλέξετε το λειτουργικό σύστημα και θα εμφανίσει τα αρχεία αρχειοθέτησής σας σε αυτό όπως φαίνεται παρακάτω

Python Αρχείο ZIP

Τώρα το αρχείο archive.zip θα εμφανιστεί στο λειτουργικό σας σύστημα (Windows Explorer)

Python Αρχείο ZIP

Βήμα 3) Όταν κάνετε διπλό κλικ στο αρχείο, θα δείτε τη λίστα με όλα τα αρχεία εκεί μέσα.

Python Αρχείο ZIP

Πώς να συμπιέσετε συγκεκριμένα αρχεία χρησιμοποιώντας το ZipFile

Βήμα 4) In Python μπορούμε να έχουμε περισσότερο έλεγχο στην αρχειοθέτηση αφού μπορούμε να ορίσουμε ποιο συγκεκριμένο αρχείο θα συμπεριλάβουμε στην αρχειοθέτηση. Στην περίπτωσή μας, θα συμπεριλάβουμε δύο αρχεία υπό αρχειοθέτηση “guru99.txt” και “guru99.txt.bak”.

Python Αρχείο ZIP

Code εξήγηση

  • Εισαγωγή κλάσης Zipfile από αρχείο zip Python μονάδα μέτρησης. Αυτή η ενότητα παρέχει πλήρη έλεγχο στη δημιουργία αρχείων zip
  • Δημιουργούμε ένα νέο αρχείο Zip με όνομα (“testguru99.zip, “w”)
  • Η δημιουργία μιας νέας κλάσης Zipfile απαιτεί άδεια, επειδή είναι αρχείο, επομένως πρέπει να γράψετε πληροφορίες στο αρχείο ως newzip
  • Χρησιμοποιήσαμε τη μεταβλητή "newzip" για να αναφερθούμε στο αρχείο zip που δημιουργήσαμε
  • Χρησιμοποιώντας τη συνάρτηση εγγραφής στη μεταβλητή "newzip", προσθέτουμε τα αρχεία "guru99.txt" και "guru99.txt.bak" στο αρχείο

Όταν εκτελέσετε τον κώδικα, μπορείτε να δείτε ότι το αρχείο δημιουργείται στη δεξιά πλευρά του πίνακα με το όνομα "guru99.zip"

Σημείωση: Εδώ δεν δίνουμε καμία εντολή "κλείσιμο" του αρχείου όπως "newzip.close" επειδή χρησιμοποιούμε "Με" κλείδωμα εύρους, οπότε όταν το πρόγραμμα πέσει εκτός αυτού του πεδίου εφαρμογής το αρχείο θα καθαριστεί και θα κλείσει αυτόματα.

Βήμα 5) Όταν -> κάντε δεξί κλικ στο αρχείο (testguru99.zip) και -> επιλέξτε το λειτουργικό σας σύστημα (Windows Explorer), θα εμφανίσει τα αρχεία αρχειοθέτησης στο φάκελο όπως φαίνεται παρακάτω.

Python Αρχείο ZIP

Όταν κάνετε διπλό κλικ στο αρχείο "testguru99.zip", θα ανοίξει ένα άλλο παράθυρο και θα εμφανιστούν τα αρχεία που περιλαμβάνονται σε αυτό.

Python Αρχείο ZIP

Πλήρης Python Code για να δημιουργήσετε ένα αρχείο ZIP

Εδώ είναι ο πλήρης κώδικας

Python 2 Παράδειγμα

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 Παράδειγμα

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

Πώς να Εξέλθετεtract (Αποσυμπιέστε) ένα αρχείο ZIP σε Python

Για να αποσυμπιέσετε ένα αρχείο, ανοίξτε το σε λειτουργία ανάγνωσης με το ZipFile και καλέστε το extractall() προς extracκάθε αρχείο, ή π.χ.tract() για να αφαιρέσετε ένα μόνο μέλος.

from zipfile import ZipFile

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

Ο πρώηνtracΗ μέθοδος tall() γράφει όλα τα αρχειοθετημένα αρχεία στον φάκελο που περνάτε ως όρισμα.

Πώς να καταχωρίσετε αρχεία σε έναν ταχυδρομικό κώδικα Archive

Μπορείτε να ελέγξετε ένα αρχείο χωρίς να χρειάζεται να κάνετε extracΗ μέθοδος namelist() επιστρέφει τα ονόματα κάθε αρχείου που είναι αποθηκευμένο μέσα στο ZIP.

from zipfile import ZipFile

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

Αυτό εκτυπώνει μια λίστα με τα ονόματα αρχείων που περιέχονται στο αρχείο.

Πώς να διαβάσετε ένα αρχείο μέσα σε έναν ταχυδρομικό κώδικα Archive

Μπορείτε να διαβάσετε ένα αρχείο μέλους απευθείας από το αρχείο χωρίς αποσυμπίεσηping το μεταφέρετε στο δίσκο χρησιμοποιώντας τη μέθοδο open() του ZipFile.

from zipfile import ZipFile

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

Αυτό είναι χρήσιμο όταν χρειάζεστε μόνο τα περιεχόμενα ενός αρχείου από ένα μεγάλο αρχείο.

Συχνές Ερωτήσεις

Χρησιμοποιήστε την εντολή shutil.make_archive(name, 'zip', root_dir) για να συμπιέσετε έναν κατάλογο ή ανοίξτε ένα ZipFile σε λειτουργία εγγραφής και καλέστε την εντολή write() για να προσθέσετε συγκεκριμένα αρχεία στο αρχείο.

Το shutil.make_archive() συμπιέζει έναν ολόκληρο κατάλογο με μία μόνο κλήση, ενώ το zipfile.ZipFile παρέχει καλύτερο έλεγχο, επιτρέποντάς σας να προσθέσετε, να διαβάσετε ή να κάνετε εξαγωγή.tract μεμονωμένα αρχεία μέσα στο αρχείο.

Ανοίξτε το αρχείο με το ZipFile('file.zip', 'r') και καλέστε το extracψηλός('φάκελος') σε extracτα πάντα, ή π.χ.tract('name') για να εξαγάγετε ένα μόνο αρχείο από το αρχείο.

Ανοίξτε το ZipFile σε λειτουργία ανάγνωσης και καλέστε τη namelist(), η οποία επιστρέφει μια λίστα με κάθε όνομα αρχείου που είναι αποθηκευμένο στο αρχείο χωρίς extracting οποιουδήποτε από αυτά.

Η εντολή with κλείνει αυτόματα το αρχείο όταν ολοκληρωθεί το μπλοκ, ακόμα και αν παρουσιαστεί σφάλμα, επομένως δεν χρειάζεται να καλέσετε την close() χειροκίνητα.

Οι βοηθοί τεχνητής νοημοσύνης, όπως το GitHub Copilot, συμπληρώνουν αυτόματα τις κλήσεις ZipFile και make_archive() και δημιουργούν βρόχους που συμπιέζουν ή αποσυμπιέζουν πολλά αρχεία από μια περιγραφή απλής γλώσσας.

Ναι. Τα εργαλεία με τεχνητή νοημοσύνη μπορούν να αυτοματοποιήσουν τη σύνταξη σεναρίων δημιουργίας αντιγράφων ασφαλείας και αρχειοθέτησης, να επιλέξουν μεταξύ shutil και zipfile και να προσθέσουν χειρισμό σφαλμάτων για αρχεία που λείπουν ή κατεστραμμένα αρχεία.

Ναι. Ανοίξτε το ZipFile και, στη συνέχεια, χρησιμοποιήστε τη μέθοδο open() σε ένα αρχείο-μέλος για να διαβάσετε τα περιεχόμενά του απευθείας, χωρίς να χρειάζεται να κάνετε ex.tracμεταφορά ολόκληρου του αρχείου στον δίσκο.

Συνοψίστε αυτήν την ανάρτηση με: