Có thể tạo một đối tượng TarFile trong bộ nhớ bằng cách sử dụng một bộ đệm chứa dữ liệu tar mà không cần phải viết TarFile vào đĩa và mở nó lại không? Chúng tôi nhận được các byte được gửi qua một ổ cắm.Làm thế nào để xây dựng một đối tượng TarFile trong bộ nhớ từ bộ đệm byte trong Python 3?
Something như thế này:
import tarfile
byte_array = client.read_bytes()
tar = tarfile.open(byte_array) # how to do this?
# use "tar" as a regular TarFile object
for member in tar.getmembers():
f = tar.extractfile(member)
print(f)
Lưu ý: một trong những lý do để làm điều này là chúng ta cuối cùng muốn có thể làm điều này với nhiều chủ đề cùng một lúc, vì vậy sử dụng một tập tin tạm thời có thể được ghi đè nếu hai chủ đề cố gắng làm điều đó cùng một lúc.
Cảm ơn sự giúp đỡ của bạn!
có thể phải bổ sung chế độ, tùy thuộc vào những gì bạn đang làm (lưu trữ trong một kho lưu trữ) tarfile.open (fileobj = byte_stream, mode = 'r: gz') – Alex
^chính xác. Tôi đã nhận được 'fileobj = file_like_object' và không thực hiện' mode = 'chỉ cho chế độ không phải là python x0 hợp lệ (chúng là tất cả các đối số vị trí, nhưng các tài liệu hiển thị' "tên tệp", "r: gz "' - nếu bạn đang sử dụng công cụ từ bộ nhớ, bạn cần phải 'fileobj = ..., mode = ...' một cách rõ ràng! – sjm324