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

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
Code εξήγηση
- Εισαγωγή κλάσης make_archive από τη λειτουργική μονάδα shutil
- Χρησιμοποιήστε τη συνάρτηση διαχωρισμού για να διαχωρίσετε τον κατάλογο και το όνομα του αρχείου από τη διαδρομή προς τη θέση του αρχείου κειμένου (guru99)
- Στη συνέχεια, καλούμε το module "shutil.make_archive("guru99 archive, "zip", root_dir)" για να δημιουργήσουμε αρχείο αρχειοθέτησης, το οποίο θα είναι σε μορφή zip
- Στη συνέχεια περνάμε στον ριζικό κατάλογο των πραγμάτων που θέλουμε να συμπιεστούν. Έτσι, όλα στον κατάλογο θα είναι συμπιεσμένα
- Όταν εκτελείτε τον κώδικα, μπορείτε να δείτε ότι το αρχείο zip αρχείου δημιουργείται στη δεξιά πλευρά του πίνακα.
Βήμα 2) Μόλις γίνει το αρχείο αρχειοθέτησής σας, μπορείτε να κάνετε δεξί κλικ στο αρχείο και να επιλέξετε το λειτουργικό σύστημα και θα εμφανίσει τα αρχεία αρχειοθέτησής σας σε αυτό όπως φαίνεται παρακάτω
Τώρα το αρχείο archive.zip θα εμφανιστεί στο λειτουργικό σας σύστημα (Windows Explorer)
Βήμα 3) Όταν κάνετε διπλό κλικ στο αρχείο, θα δείτε τη λίστα με όλα τα αρχεία εκεί μέσα.
Πώς να συμπιέσετε συγκεκριμένα αρχεία χρησιμοποιώντας το ZipFile
Βήμα 4) In Python μπορούμε να έχουμε περισσότερο έλεγχο στην αρχειοθέτηση αφού μπορούμε να ορίσουμε ποιο συγκεκριμένο αρχείο θα συμπεριλάβουμε στην αρχειοθέτηση. Στην περίπτωσή μας, θα συμπεριλάβουμε δύο αρχεία υπό αρχειοθέτηση “guru99.txt” και “guru99.txt.bak”.
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), θα εμφανίσει τα αρχεία αρχειοθέτησης στο φάκελο όπως φαίνεται παρακάτω.
Όταν κάνετε διπλό κλικ στο αρχείο "testguru99.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())
Αυτό είναι χρήσιμο όταν χρειάζεστε μόνο τα περιεχόμενα ενός αρχείου από ένα μεγάλο αρχείο.







