Python ZIP พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Python สร้างไฟล์ ZIP ด้วยโมดูล shutil และ zipfile ที่มีมาให้ในตัว ที่นี่คุณจะได้เรียนรู้วิธีบีบอัดทั้งไดเร็กทอรีโดยใช้ make_archive() บีบอัดไฟล์เฉพาะด้วย ZipFile และอื่นๆtract, แสดงรายการ และอ่านเนื้อหาในคลังข้อมูล

  • 🗜️ make_archive(): shutil.make_archive() จะบีบอัดทั้งไดเร็กทอรีเป็นไฟล์ .zip
  • 📄 ZipFile.write(): ZipFile.write() จะเพิ่มไฟล์ที่ระบุลงในไฟล์เก็บถาวรทีละไฟล์
  • 📂 extracสูง(): ไฟล์ Zip.extractall() จะคลายไฟล์ทั้งหมดจากไฟล์บีบอัดไปยังโฟลเดอร์
  • 📋 namelist(): ZipFile.namelist() แสดงรายการชื่อไฟล์ภายในไฟล์ ZIP
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI เช่น Copilot สามารถสร้างและคลายรหัสไปรษณีย์ได้ทันที

Python ไฟล์ ZIP

Python ช่วยให้คุณสร้างไฟล์ zip/tar ได้อย่างรวดเร็ว

คำสั่งต่อไปนี้จะบีบอัดไดเรกทอรีทั้งหมด

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)
  • จากนั้นเราเรียกโมดูล “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 แล้วเรียกใช้ extracสูง() ถึง extracในทุกไฟล์ หรือตัวอย่างtract() เพื่อดึงสมาชิกออกมาทีละคน

from zipfile import ZipFile

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

อดีตtracเมธอด tall() จะเขียนไฟล์ที่เก็บถาวรทั้งหมดลงในโฟลเดอร์ที่คุณส่งเป็นอาร์กิวเมนต์

วิธีการแสดงรายการไฟล์ในไฟล์ ZIP Archive

คุณสามารถตรวจสอบไฟล์เก็บถาวรได้โดยไม่ต้องออกจากระบบtracเรียกใช้เมธอด namelist() ซึ่งจะส่งคืนชื่อของไฟล์ทุกไฟล์ที่จัดเก็บอยู่ภายในไฟล์ ZIP

from zipfile import ZipFile

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

คำสั่งนี้จะแสดงรายการไฟล์ทั้งหมดที่อยู่ในไฟล์เก็บถาวร

วิธีอ่านไฟล์ภายในไฟล์ ZIP 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) เพื่อบีบอัดไดเร็กทอรีเป็นไฟล์ Zip หรือเปิดไฟล์ ZipFile ในโหมดเขียนและเรียกใช้ write() เพื่อเพิ่มไฟล์เฉพาะลงในไฟล์เก็บถาวร

shutil.make_archive() จะบีบอัดทั้งไดเร็กทอรีในครั้งเดียว ในขณะที่ zipfile.ZipFile ให้การควบคุมที่ละเอียดกว่า โดยอนุญาตให้คุณเพิ่ม อ่าน หรือส่งออกไฟล์ได้tracไฟล์แต่ละไฟล์ภายในคลังเก็บข้อมูล

เปิดไฟล์บีบอัดด้วย ZipFile('file.zip', 'r') แล้วเรียกใช้ extractall('โฟลเดอร์') ถึง extracไม่ใช่ทุกอย่าง หรือเช่นtracใช้คำสั่ง t('name') เพื่อดึงไฟล์เดียวออกมาจากไฟล์เก็บถาวร

เปิดไฟล์ Zip ในโหมดอ่านและเรียกใช้ namelist() ซึ่งจะส่งคืนรายการชื่อไฟล์ทั้งหมดที่จัดเก็บอยู่ในไฟล์เก็บถาวรโดยไม่รวมไฟล์อื่นtracติเตียนพวกเขาสักคน

คำสั่ง `with` จะปิดไฟล์เก็บถาวรโดยอัตโนมัติเมื่อบล็อกสิ้นสุดลง แม้ว่าจะเกิดข้อผิดพลาดก็ตาม ดังนั้นคุณไม่จำเป็นต้องเรียก `close()` ด้วยตนเอง

ผู้ช่วย AI เช่น GitHub Copilot จะเติมคำอัตโนมัติให้กับคำสั่ง ZipFile และ make_archive() และสร้างลูปที่บีบอัดหรือคลายไฟล์จำนวนมากจากคำอธิบายที่เป็นภาษาธรรมดา

ใช่แล้ว เครื่องมือที่ขับเคลื่อนด้วย AI สามารถสร้างสคริปต์สำรองข้อมูลและจัดเก็บไฟล์โดยอัตโนมัติ เลือกใช้รูปแบบไฟล์ shutil หรือ zipfile และเพิ่มการจัดการข้อผิดพลาดสำหรับไฟล์ที่หายไปหรือไฟล์ที่จัดเก็บเสียหายได้

ใช่แล้ว เปิดไฟล์ Zip จากนั้นใช้เมธอด open() ของไฟล์ Zip นั้นกับไฟล์สมาชิกเพื่ออ่านเนื้อหาโดยตรง โดยไม่ต้องผ่านกระบวนการใดๆ เพิ่มเติมtracกำลังถ่ายโอนไฟล์เก็บถาวรทั้งหมดลงดิสก์

สรุปโพสต์นี้ด้วย: