Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách làm việc với file tarball/tar trong Python
File TAR (Tape Archive Files) là định dạng dùng để gom nhiều file lại thành một file duy nhất, rất tiện lợi khi cần lưu trữ hoặc gửi một loạt file qua mạng.Python có module tarfile
để làm việc với các file TAR, hỗ trợ các nén bằng gzip, bz2, và lzma.Bài viết này sẽ hướng dẫn bạn cách sử dụng tarfile
để đọc và ghi các file TAR trong Python.
Đọc file TAR trong Python
Hàm tarfile.open
được dùng để đọc file TAR và trả về một đối tượng tarfile.TarFile
.
Hai tham số quan trọng của hàm này là filename
(đường dẫn đến file ) và mode
(chế độ mở file ).
Chế độ mở (mode
) có thể kèm theo phương pháp nén theo cú pháp mode[:compression]
, với các tùy chọn nén:
Bài viết này được đăng tại [free tuts .net]
gz
cho gzipbz2
cho bz2xz
cho lzma
Ví dụ:
import tarfile with tarfile.open("sample.tar", "r") as tf: print("Opened tarfile")
Giải nén file TAR
Sau khi mở file , bạn có thể giải nén bằng phương thức tarfile.TarFile.extractall
. Một số tham số quan trọng của phương thức này:
path
: đường dẫn thư mục đích để lưu file , mặc định là thư mục hiện tại (.
).members
: chỉ định các file cần giải nén, phải là một tập con của phương thứctarfile.TarFile.getmembers()
. Mặc định, tất cả các file sẽ được giải nén.
Ví dụ:
import tarfile with tarfile.open("sample.tar", "r") as tf: print("Opened tarfile") tf.extractall(path="./extraction_dir") print("All files extracted")
Giải nén một file cụ thể
Để giải nén file cụ thể, hãy truyền tham chiếu của đối tượng file hoặc đường dẫn file dưới dạng chuỗi vào phương thức tarfile.TarFile.extract
.
Để liệt kê các file trong file TAR, bạn có thể dùng phương thức tarfile.TarFile.getmembers
, trả về danh sách các đối tượng tarfile.TarInfo
.
Ví dụ:
import tarfile with tarfile.open("./sample.tar", "r") as tf: print("Opened tarfile") print(tf.getmembers()) # Danh sách các file bên trong print("Members listed")
Kết quả:
Opened tarfile [<TarInfo 'sample' at 0x7fe14b53a048>, <TarInfo 'sample/sample_txt1.txt' at 0x7fe14b53a110>, ...]
Giải nén một file cụ thể:
import tarfile file_name = "sample/sample_txt1.txt" with tarfile.open("sample.tar", "r") as tf: print("Opened tarfile") tf.extract(member=file_name, path="./extraction_dir") print(f"{file_name} extracted")
Ghi file vào TAR
Để thêm file vào file TAR, mở file ở chế độ append
và sử dụng phương thức tarfile.TarFile.add
, truyền vào đường dẫn của file cần thêm.
Ví dụ:
import tarfile file_name = "sample_txt5.txt" with tarfile.open(f"./sample.tar", "a") as tf: print("Opened tarfile") print(f"Members before addition of {file_name}") print(tf.getmembers()) tf.add(f"{file_name}", arcname="sample") print(f"Members after addition of {file_name}") print(tf.getmembers())
Module tarfile
là công cụ hiệu quả trong Python để quản lý các file TAR, giúp bạn dễ dàng lưu trữ và thao tác trên nhiều file một cách thuận tiện.
Kết bài
Qua bài viết, bạn đã tìm hiểu cách làm việc với file TAR trong Python bằng module tarfile
, bao gồm đọc, giải nén, và ghi thêm file vào file TAR. Module tarfile
giúp quản lý tập tin dễ dàng, hỗ trợ nhiều định dạng nén, rất hữu ích khi cần lưu trữ hoặc truyền tải nhiều tập tin. Nắm vững các thao tác này sẽ giúp bạn xử lý dữ liệu một cách linh hoạt và hiệu quả hơn trong các dự án Python của mình.