ให้เรตสมาชิก: 5 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งาน
 

 การเขียน Code ให้ zip ไฟล์ด้วยภาษา Python

Zip คือการบีบอัดไฟล์จำนวนมากให้อยู่ภายในที่เดียวกันและมีขนาดที่เล็กลง โดยปรกติเราจะใช้โปรแกรมสำเร็จรูปจำพวก WinRAR หรือเราอาจจะเคยเห็นการเขียน code เพื่อ zip ของภาษาต่างๆ มาบ้างแล้ว เช่น Java หรือ C# วันนี้เราจะมาสอนการเขียน code เพื่อ zip ไฟล์ ด้วยภาษา Python กันบ้างโดย Library หลักๆ ที่เราจะใช้จะเป็น os กับ zipfile ซึ่งภายใน Folder ที่เราจะนำมาลองทำกันดูจะมีข้อมูลดังนี้

 

แสดงตำแหน่งของ Folder และ Files
แสดงตำแหน่งของ Folder และ Files

โดยวิธีการคือ

1. ทำการ Import library os กับ zipfile

import os
import zipfile as z

2. เราจะสร้าง ฟังก์ชั่นขึ้นมาเพื่อทำการอ่านข้อมูลของไฟล์ที่เราต้องการจะ zip ว่าอยู่ตำแหน่งไหนบ้าง

def zip_all_file(path, zipfi):
    for root, dirs, files in os.walk(path):
        for file in files:
            zipfi.write(os.path.join(root, file))

โดยเราจะทำการไล่เก็บผ่านการ loop ผ่าน method ที่ชื่อว่า os.walk โดยฟังชั่นนี้จะทำการ ไล่อ่านตำแหน่งของแต่ละ folder , file แล้วนำมาเก็บในตัวแปรที่ชื่อ root , dirs , file หากยังไม่เห็นภาพ ผมเลยลองนำ ค่าทั้ง 3 มาใช้คำสั่ง print เพื่อจะดูค่าข้างใน ผลลัพท์ที่ได้คือ


ผลลัพธ์ที่ได้จากการลอง print 3 ตัวแปร
ผลลัพธ์ที่ได้จากการ Print ตัวแปร 3 ตัว root , dirs , files

เห็นมั้ยครับพอมองแบบนี้แล้วจะสามารถเข้าใจง่ายขึ้นเยอะ หลังจากนั้น เราจะทำการ zip file ที่ทำการ loop หาจาก os.walk แล้วด้วยคำสั่ง

        for file in files:
            zipfi.write(os.path.join(root, file))

คือ ถ้าในตัวแปร files มี file อยู่จะทำการ loop เพื่อ zip folder และ file ภายใน 

ขั้นต่อไปเราจะมาเขียน code เพิ่มอีกนิดหน่อยภายใน ฟังก์ชั่นหลักกันตาม code ด้านล่างครับ

if __name__ == '__main__':
    zipf = z.ZipFile('Python.zip', 'w' )
    zip_all_file('Test_zip/', zipf)
    zipf.close()

โดยบรรทักแรกจะเป็นการสร้างตัวแปร เพื่อกำหนด ตัว zip ว่าจะใช้ชื่อไฟล์ที่ทำการบีบอัดแล้วว่าอะไร ซึ่งหลักการนี้สามารถศึกษาเพิ่มได้จาก

https://www.mindphp.com/forums/viewtopic.php?f=144&t=58953

และเราจะทำการเรียกใช้ ฟังก์ชั่น zip_all_file โดยกำหนดค่าตำแหน่งของ folder ที่เราจะทำการ zip และ ตัวแปรกำหนดค่า บรรทัดแรกที่เราได้ทำไว้แล้ว

 

ผลลัพท์ที่ได้ เมื่อเรารันโปรแกรมแล้วจะมี ไฟล์ zip ชื่อ Python.zip ที่เราได้ทำการกำหนดขึ้นมาซึ่งภายในจะประกอบไปด้วย Folder และ FIle ต่างๆที่้ราได้ทำการ เก็บเอาไว้

ผลลัพธ์ที่ได้จากการรันโปรแกรมคือจะมีไฟล์ zip เพิ่มเข้ามา
ผลลัพธ์ที่ได้จากการรันโปรแกรมจะมี ไฟล์ zip เพิ่มเข้ามา

อ้างอิง

zipfile — Work with ZIP archives.[ออนไลน์].เข้าถึงจาก : https://docs.python.org/3/library/zipfile.html.[10-Jan-2020]

Working with zip files in Python.[ออนไลน์].เข้าถึงจาก : https://www.geeksforgeeks.org/working-zip-files-python/.[10-Jan-2020]

os — Miscellaneous operating system interfaces.[ออนไลน์].เข้าถึงจาก : https://docs.python.org/3/library/os.html.[10-Jan-2020]

 

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : คำสั่งในการทำงานของโมดูล Turtle ส่วนที่ 3 การควบคุมหน้าต่าง

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีการนำชื่อข้อมูลในชื่อในฐานข้อมูล ในไฟล์ XML ของ module joomla
โดย jamepiyawat ส 18 ม.ค. 2020 6:44 pm บอร์ด Joomla Developing Knowledge
0
5
ส 18 ม.ค. 2020 6:44 pm โดย jamepiyawat
วิธีการจัดทำการระบบแจ้้งเตือนใน phpbb
โดย Ittichai_chupol ส 18 ม.ค. 2020 5:42 pm บอร์ด PHP Knowledge
0
5
ส 18 ม.ค. 2020 5:42 pm โดย Ittichai_chupol
Pillow library ปรับขนาดรูปเป็นเปอร์เซ็นเพื่อนำไปใช้งานได้สะดวก
โดย benzas00123 ส 18 ม.ค. 2020 5:25 pm บอร์ด Python Knowledge
0
4
ส 18 ม.ค. 2020 5:25 pm โดย benzas00123
Pillow library Optimize รูปภาพเพื่อให้มีขนาดของข้อมูลที่เล็กลง
โดย benzas00123 ส 18 ม.ค. 2020 2:53 pm บอร์ด Python Knowledge
0
12
ส 18 ม.ค. 2020 2:53 pm โดย benzas00123
ตัวช่วยในการคำนวณแคลอรี่สำหรับผู้ที่รักการออกกำลังกาย
โดย prmindphp ส 18 ม.ค. 2020 11:50 am บอร์ด MindPHP News & Feedback
0
17
ส 18 ม.ค. 2020 11:50 am โดย prmindphp
เราจะเก็บรูปข้อมูลของรูปลง database เราจะใช้ data type อะไรครับ
โดย benzas00123 ส 18 ม.ค. 2020 11:31 am บอร์ด SQL - Database
2
15
ส 18 ม.ค. 2020 1:17 pm โดย benzas00123
อยากทราบวิธีการแก้ไขปัญหาการ อัพโหลดไฟล์ excel แล้วไม่รองรับภาษาไทย
โดย Ittichai_chupol ศ 17 ม.ค. 2020 5:58 pm บอร์ด Programming - PHP
6
34
ส 18 ม.ค. 2020 6:25 pm โดย Ittichai_chupol
ต้องการนับจำนวนอักษรเเละตัดอักษรที่เกิน มีปัญหากับภาษาไทย
โดย thatsawan ศ 17 ม.ค. 2020 5:18 pm บอร์ด Programming - C/C++ & java & Python
0
9
ศ 17 ม.ค. 2020 5:18 pm โดย thatsawan
สอบถามครับ ลูปค่าออกมาแล้วต้องการให้มันเก็บค่าในตัวแปร ต้องทำยังไงครับ
โดย chatee supasand ศ 17 ม.ค. 2020 3:51 pm บอร์ด Programming - C/C++ & java & Python
3
32
ศ 17 ม.ค. 2020 5:19 pm โดย thatsawan
อยากทราบวิธีก่ารเปิด exe ใน ubutu เวอชั่น 14
โดย Ittichai_chupol ศ 17 ม.ค. 2020 2:33 pm บอร์ด Programming - PHP
2
23
ศ 17 ม.ค. 2020 4:14 pm โดย Ittichai_chupol
วิธีการสร้างระบบชำระเงินด้วย omise โดยใช้ php
โดย Ittichai_chupol พฤ 16 ม.ค. 2020 6:53 pm บอร์ด PHP Knowledge
0
34
พฤ 16 ม.ค. 2020 6:53 pm โดย Ittichai_chupol
Pillow library กับการ เปลี่ยนนามสกุล img ทีเดียวหลายๆ file
โดย benzas00123 พฤ 16 ม.ค. 2020 5:45 pm บอร์ด Python Knowledge
0
19
พฤ 16 ม.ค. 2020 5:45 pm โดย benzas00123
Pillow library ในการจัดการและประมวลผลรูปภาพ
โดย benzas00123 พฤ 16 ม.ค. 2020 5:04 pm บอร์ด Python Knowledge
0
24
พฤ 16 ม.ค. 2020 5:04 pm โดย benzas00123
ความแตกต่างระหว่าง visibility: hidden; กับ display: none;
โดย Ittichai_chupol พ 15 ม.ค. 2020 6:44 pm บอร์ด CSS Knowledge
0
58
พ 15 ม.ค. 2020 6:44 pm โดย Ittichai_chupol
ตัวอย่าง การ Query ข้อมูลทีเป็นที่ได้ผลการค้นหา
โดย mindphp พ 15 ม.ค. 2020 6:40 pm บอร์ด Programming - C/C++ & java & Python
0
30
พ 15 ม.ค. 2020 6:40 pm โดย mindphp
สอบถามครับ ทำไมสร้างตารางฐานข้อมูลแล้ว มันไม่ใน ใน pg
โดย chatee supasand พ 15 ม.ค. 2020 5:55 pm บอร์ด Programming - C/C++ & java & Python
4
34
พ 15 ม.ค. 2020 6:07 pm โดย thatsawan
ขอสอบถาม error ของ flask ครับ
โดย benzas00123 พ 15 ม.ค. 2020 10:44 am บอร์ด Programming - C/C++ & java & Python
4
35
พ 15 ม.ค. 2020 10:53 am โดย benzas00123
B - เปิดใบแจ้งหนี้ INVOICE(None Vat) ไม่ได้
โดย mindphp อ 14 ม.ค. 2020 7:35 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
2
อ 14 ม.ค. 2020 7:35 pm โดย mindphp
สอบถาม code ของ Flask หน่อยครับว่ามันเอาไว้ใช้ทำอะไร
โดย benzas00123 อ 14 ม.ค. 2020 4:50 pm บอร์ด Programming - C/C++ & java & Python
3
35
พ 15 ม.ค. 2020 5:54 am โดย mindphp
วิธีการเพิ่มส่วนการแสดงในหน้าสมัครสมาชิกของ เว็บบอร์ด phpbb
โดย Ittichai_chupol อ 14 ม.ค. 2020 3:19 pm บอร์ด PHP Knowledge
0
40
อ 14 ม.ค. 2020 3:19 pm โดย Ittichai_chupol