Python để nén file, thư mục (zip, tar, gzip, gztar,…) chúng ta có thể sử dụng module shutil. Bài viết chia sẻ mã nguồn thực hiện zip một thư mục và tìm hiểu cách sử dụng của hàm shutil.make_archive
Table of Contents
Mã nguồn Zip thư mục
1 2 3 |
import shutil shutil.make_archive(output_filename, 'zip', dir_name) |
Tìm hiểu hàm shutil.make_archive
shutil module thực hiện các tác vụ cấp cao với file và tập các file. Ngoài ra, shutil module còn hỗ trợ các phương thúc để sao chép, sửa, xóa file và nén file. Tham khảo chi tiết tại đây
shutil.make_archive là tiện ích để tạo, nén file. Phương thức này được xây dựng dựa trên module zipfile và tarfile
Cách sử dụng shutil.make_archive
shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
base_name là tên của file nén (sẽ được tạo ra) gồm cả đường dẫn (lưu ý: không gồm phần đuôi file – extension).
format là định dạng của file nén. Các định dạng được hỗ trợ là
- zip: ZIP file (Nếu module
zlib
được hỗ trợ). - tar: uncompressed tar file.
- gztar: (Nếu module
zlib
được hỗ trợ). - bztar: (Nếu module
bz2
được hỗ trợ). - xztar: (Nếu module
lzma
được hỗ trợ).
root_dir là đường dẫn mà lưu file nén (file kết quả)
base_dir là đường dẫn nơi mà bắt đầu nén
root_dir và base_dir có đường dẫn mặc định là đường dẫn hiện tại – current directory
Nếu dry_run là true thì file nén không được tạo nhưng trên thực tế hoạt động vẫn được thực hiện và chỉ lưu lại log.
owner and group được sử dụng khi tạo file nén. Mặc định là user, group hiện tại
logger trong trường hợp bạn sử dụng log.
verbose là tham số không sử dụng
Ví dụ về sử dụng module nén file
1 2 3 4 5 6 |
>>> from shutil import make_archive >>> import os >>> archive_name = os.path.expanduser(os.path.join('~', 'myarchive')) >>> root_dir = os.path.expanduser(os.path.join('~', '.ssh')) >>> make_archive(archive_name, 'gztar', root_dir) '/Users/tarek/myarchive.tar.gz' |
Tham khảo bài viết khác
Mình là một lập trình viên tự do với hơn 10 năm kinh nghiệm. Mình chuyên về Web scraping, Web automation, Python, Django
2 Replies to “Python nén file, thư mục”