קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

Zipping היא דרך אלגנטית לדחוס מספר קבצים ולשלב אותם לאחד. זה חוסך לא רק מקום אחסון אלא גם רוחב פס בעת העברת קובץ דרך רשת. אחת התכונות הטובות ביותר של zip היא שהוא עובד בכל הפלטפורמות העיקריות: Windows, Linux ו-Mac.

Zip משתמש בדחיסה ללא אובדן כך שהוא שומר על כל הנתונים בעת דחיסה וביטול דחיסה. אתה יכול גם להצפין ולפענח את קובצי ה-zip שלך.

עם כל כך הרבה תכונות לחקור, גלה כיצד תוכל לקרוא, לדחוס ולפתוח קבצים באמצעות מודול ה-zipfile של Python.

מהו מודול ה-zipfile?

אתה יכול להשתמש במודול zipfile הסטנדרטי כדי לתפעל קבצי zip באמצעות Python. עם מודול זה, אתה יכול לפתוח ולקרוא קובצי zip, לקרוא את המטא נתונים שלהם, ליצור קובץ zip, לדחוס אותו ולפתוח קבצים. קיימות שלוש שיטות דחיסה זמינות: Deflate, Bzip2 ו-LZMA.

אחד הדברים שחסרים למודול הוא היכולת לטפל בקבצי ריבוי דיסקים, אבל הוא כן מטפל בסיומת ZIP64. זה יכול גם לפענח ארכיוני zip אבל לא להצפין אותם. באמצעות מודול zipfile אתה יכול לקבל מטא נתונים של קובץ zip כגון תאריך ושעת השינוי. אתה יכול גם להביא פרטים כמו מערכת ההפעלה המשמשת ליצירת הקובץ, גרסת ה-zip וגודל הקובץ בפורמט דחוס וגם לא דחוס.

instagram viewer

כיצד לדחוס קבצים באמצעות Python

אתה יכול לדחוס קבצים מרובים לארכיון אחד באמצעות מודול ה-zipfile של Python. ייבא את ZipFile מודול מה- קובץ zip חבילה לביצוע פעולות ה-zip הנדרשות. גם ייבוא ה OS מודול לבחירה ולשמור קבצים.

הגדר פונקציה get_all_file_paths(). זה צריך לקבל פרמטר ספרייה שמכיל את הנתיב לתיקיה המכילה את הקבצים ל-zip.

אתחול רשימה ריקה שתשמור את רשימת נתיבי הקבצים. השתמש בלולאת for כדי לקבל את התוכן המלא של ספריית היעד באמצעות ה- os.walk() פוּנקצִיָה. פונקציה זו מביאה את שמות הקבצים בעץ ספריות על ידי מעבר לאורכו בגישה מלמעלה למטה או מלמטה למעלה. עבור כל ספרייה, הפונקציה מחזירה שלושה טופלים המכילים root, dirs וקבצים.

השורש הוא מחרוזת המכילה את הנתיב המלא לספרייה. רשימת ה-dirs כוללת את כל ספריות המשנה הכלולות בספרייה. רשימת הקבצים מכילה את כל הקבצים הקיימים בספרייה.

בתוך הלולאה, הכריז על אחר לולאה כדי לחזור על רשימת הקבצים. להשתמש ב os.path.join() פונקציה לשלב את שם הספרייה עם כל שם קובץ כדי ליצור נתיב שלם. לאחר מכן, הוסף את שם הקובץ המלא הזה לרשימה שיצרת קודם לכן. לאחר שהפעולה הזו תסתיים, החזר את רשימת נתיבי הקבצים.

# ייבא את המודולים הדרושים
מ קובץ zip יְבוּא ZipFile
יְבוּא OS

# צור פונקציה כדי לקבל את כל נתיבי הקבצים
defget_all_file_paths(מַדרִיך):
# אתחול רשימה ריקה לאחסון נתיבי קבצים
file_paths = []

# נווט בין הקבצים
לשורש, ספריות, קבציםבOS.לָלֶכֶת(מַדרִיך):
עבור שם קובץ בקבצים:
# הצטרף לשורש ולשם הקובץ כדי ליצור נתיב שלם לקובץ
filepath = os.path.join (שורש, שם קובץ)
file_paths.לְצַרֵף(נתיב קובץ)

# מחזיר את כל נתיבי הקבצים
לַחֲזוֹר file_paths

אחסן את הנתיב לתיקיה המכילה את הקבצים שברצונך לדחוס במשתנה הנקרא ספרייה. קרא לפונקציה, get_all_file_paths() שיצרת קודם ולאחסן את הערך שהוא מחזיר בו file_paths.

הצג הודעה למשתמש כדי ליידע אותו שאלו הקבצים שהתוכנית תדחוס. חזור על הקבצים והצג את שמותיהם.

העבר את השם שאתה רוצה שיהיה לקובץ ה-zip שלך יחד עם המפרט שהתוכנית מחזירה קובץ לכתיבה באמצעות הצהרת with כדי לטפל בחריגים. חזור על כל קובץ והשתמש בפונקציה write() על פני הקובץ הניתן לכתיבה לקובץ zip.

לאחר השלמת הפעולה, פלט הודעה המסבירה שהתוכנית מכסה את כל הקבצים בהצלחה.

נתיב אחד לתיקייה שברצונך לדחוס
ספרייה = './pythonzip'

# פונקציה מתקשרת כדי לקבל את כל נתיבי הקבצים בספריה
file_paths = get_all_file_paths (ספרייה)

# הדפסת רשימת כל הקבצים שברצונך לדחוס
הדפס('רשימת הקבצים שיודחוסו:')

עבור file_name ב-file_paths:
הדפס(שם קובץ)

# כתיבת קבצים לקובץ zip
עם ZipFile('my_file.zip', 'וו') כפי ש רוכסן:
# כתוב כל קובץ אחד אחד
עבור קובץ ב-file_paths:
רוכסן.לִכתוֹב(קוֹבֶץ)

הדפס('כל הקבצים מכווצים!')

כיצד לפתוח קבצים באמצעות Python

היישום של פתיחת קבצים באמצעות מודול zipfile הוא הרבה יותר קל. ייבא את קובץ zip חבילה מה ZipFile מודול ואחסן את שם קובץ ה-zip שברצונך לחלץ במשתנה. השתמש במשפט with כדי לטפל בחריגים ופתח את הקובץ שברצונך לחלץ במצב קריאה. להשתמש ב printdir() פונקציה להצגת תוכן העניינים של הקבצים הקיימים ב-zip.

הצג הודעת התקדמות שאתה מחלץ את הקבצים והשתמש ב- חלץ הכל() פונקציה כדי לחלץ את התוכן של קובץ ה-zip לספריית העבודה הנוכחית. לחלופין, אתה יכול לכלול פרמטר נתיב כדי לשנות את הנתיב שבו התוכנה מחלצת את הקבצים.

הצג הודעה באמצעות הדפס הצהרה על סיום הפעולה.

# ייבוא ​​המודולים הנדרשים
מ קובץ zip יְבוּא ZipFile

# העבר את שם קובץ ה-zip שברצונך לחלץ
file_name = "extract.zip"

# פתיחת קובץ ה-zip במצב קריאה
עם ZipFile (שם_קובץ, 'ר') כפי ש רוכסן:
# הצג את התוכן של קובץ ה-zip
רוכסן.printdir()

# חילוץ כל הקבצים
הדפס('חלץ בתהליך...')
רוכסן.חלץ הכל()
הדפס('כל הקבצים חולצו!')

עוד על קבצי Zip

קובצי Zip זכו לפופולריות רבה והם נמצאים בשימוש כבר עשרות שנים. אתרים פופולריים כמו GitHub ו-Google Drive מאפשרים לך להוריד אוסף של קבצים כארכיון zip. תוכנית ה-zip דוחסת קבוצה של קבצים לחבילה אחת. זאת בניגוד לכלי כמו tar אשר אורז קבצים יחד אך אינו דוחס אותם.

אם אתה רוצה להצפין את הקבצים שלך באמצעות אלגוריתם יעיל יותר, קבצי RAR הם הדרך ללכת. RAR משתמש באלגוריתם AES-128 שהוא טוב יותר מאלגוריתם השחרור המשמש את קבצי zip. בסופו של דבר, בחר את זה שהכי עונה על הצורך שלך.