Python cho phép bạn nhanh chóng tạo tệp lưu trữ ở định dạng zip / tar.
Lệnh sau sẽ nén toàn bộ thư mục
shutil.make_archive (output_filename, 'zip', dir_name)
Lệnh sau cung cấp quyền thao tác trên các tệp mà bạn muốn lưu trữ
ZipFile.write(filename)
Dưới đây là các bước để tạo tệp nén trong Python
Bước 1) Để tạo tệp nén trong Python, cần đảm bảo rằng bạn đã có các câu lệnh nạp chính xác và đúng thứ tự. Câu lệnh nạp để thao tác với tệp nén ở đây là: from shutil import make_archive
Giải thích mã nguồn
- Nạp lớp make_archive từ mô-đun shutil.
- Sử dụng hàm split để lấy ra đường dẫn của thư mục đang lưu trữ tệp.
- Tiếp theo chúng ta sử dụng mô-đun “shutil.make_archive (” guru99 archive, “zip”, root_dir)” để tạo tệp lưu trữ ở định dạng nén (zip).
- Sau đó, chúng ta sẽ truyền vào đường dẫn tới thư mục chứa dữ liệu cần nén. Khi đó toàn bộ nội dung bên trong thư mục sẽ được nén.
- Khi bạn thực thi mã nguồn, bạn có thể thấy tệp nén zip được tạo ra ở phía bảng bên phải.
Bước 2) Sau khi tạo một tệp nén, bạn có thể nhấp chuột phải vào tệp và chọn “Show in Explorer”, và toàn bộ các tệp đã được nén bên trong sẽ được hiển thị như dưới đây.
Bây giờ tệp archive.zip của bạn sẽ xuất hiện trên hệ điều hành của bạn (Windows Explorer)
Bước 3) Khi bạn click đúp vào tệp, bạn sẽ thấy danh sách tất cả các tệp trong đó.
Bước 4) Trong Python, chúng ta có thể có nhiều thao tác hơn với tệp nén vì chúng ta có thể định nghĩa tệp nào sẽ được nén. Trong trường hợp này, chúng ta sẽ thêm hai tệp đó là “guru99.txt” và “guru99.txt.bak”.
Giải thích mã nguồn
- Nạp lớp Zipfile từ mô-đun Zipfile của Python. Mô-đun này cung cấp đầy đủ các hàm để chúng ta có thể thực hiện việc tạo các tệp nén.
- Chúng ta tạo một Zipfile mới có tên (“testguru99.zip,”w”)
- Tạo một lớp Zipfile mới cần phải truyền vào quyền bởi vì đó là một tệp, vậy nên bạn cần ghi thông tin vào tệp thông qua newzip.
- Chúng ta đã sử dụng biến “newzip” để trỏ tới tệp nén chúng ta đã tạo.
- Sử dụng hàm ghi với biến “newzip”, chúng ta sẽ bổ sung thêm các tệp “guru99.txt” và “guru99.txt.bak” vào trong tệp nén.
Khi bạn thực thi đoạn mã nguồn, bạn có thể thấy ở bảng bên phải có một tệp nén là “guru99.zip”.
Lưu ý: Ở đây chúng ta không sử dụng câu lệnh nào để “đóng” tệp, ví dụ như “newzip.close” vì chúng ta đã sử dụng khóa phạm vi “with” nên khi chương trình ra ngoài phạm vi câu lệnh này, tệp sẽ được dọn dẹp và đóng lại một cách tự động.
Bước 5) Khi bạn -> nhấp chuột phải vào tệp (testguru99.zip) và -> chọn Windows Explorer, nó sẽ hiển thị các tệp lưu trữ trong thư mục nén như hình bên dưới.
Khi bạn click đúp chuột vào tệp “testguru99.zip”, nó sẽ mở một cửa sổ khác và các tệp chứa trong tệp nén sẽ được hiển thị.
Dưới đây là mã nguồn hoàn chỉnh
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()
Tổng kết
- Để nén toàn bộ thư mục, sử dụng lệnh “shutil.make_archive (“name”,”zip”, root_dir)
- Để ghi thêm tệp vào thư mục đã nén, sử dụng lệnh “ZipFile.write (filename)”