Tôi đang cố gắng sử dụng Trình quản lý ngữ cảnh cho luồng byteo trong khi tạo nhiều tệp zip. Tôi không thể tìm thấy cách nào để "đặt lại" đối tượng byte sau khi tệp zip đầu tiên được viết, vì vậy tôi có thể sử dụng cùng một đối tượng byte để tạo tệp zip tiếp theo. Tôi luôn nhận được lỗi "Không thể mở tệp ... dưới dạng lưu trữ" khi cố gắng mở tệp zip thứ hai sau khi được ghi vào đĩa. Tệp zip đầu tiên mở tốt. Tôi đã tìm kiếm và không thể tìm thấy một giải pháp. Thay đổi chế độ từ ghi sang phần phụ cũng không giúp được gì. Tất nhiên, tôi có thể tái tạo thành một đối tượng byte mới, nhưng điều đó đánh bại người quản lý bối cảnh. Dưới đây là mã tôi nghĩ nên hoạt động. Tôi đang sử dụng Anaconda Python 3.6.6 trên Windows 10.
import io import os import zipfile with io.BytesIO() as bytes_io: with zipfile.ZipFile(bytes_io, mode='w') as zf: filecount = 0 for item in os.scandir(r'C:\Users\stephen\Documents'): if not item.is_dir(): zf.write(item.path, item.name) filecount += 1 if filecount % 3 == 0: with open(r'C:\Users\stephen\Documents\\' + str(filecount // 3) + '.zip', 'wb') as f: f.write(bytes_io.getvalue()) bytes_io.seek(0) bytes_io.truncate()Hỏi ngày 5 tháng 10 năm 2018 lúc 5:13Oct 5, 2018 at 5:13
0
Bạn có thể sử dụng lại cùng một đối tượng BytesIO, nhưng bạn nên tạo một đối tượng ZipFile mới cho mọi tệp zip bạn muốn tạo:
with io.BytesIO() as bytes_io: filecount = 0 for item in os.scandir(r'C:\Users\stephen\Documents'): if not item.is_dir(): with zipfile.ZipFile(bytes_io, mode='w') as zf: zf.write(item.path, item.name) filecount += 1 if filecount % 3 == 0: with open(r'C:\Users\stephen\Documents\\' + str(filecount // 3) + '.zip', 'wb') as f: f.write(bytes_io.getvalue()) bytes_io.seek(0) bytes_io.truncate()Đã trả lời ngày 5 tháng 10 năm 2018 lúc 5:49Oct 5, 2018 at 5:49
blhsingblhsingblhsing
83K6 Huy hiệu vàng65 Huy hiệu bạc95 Huy hiệu Đồng6 gold badges65 silver badges95 bronze badges
4
2021-04-13 & NBSP; 20: 02: 34
tạo ra2021-04-13 20:02 by John Hagen, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Liên kết | Chỉnh sửa | PR 25401, 2021-04-14 12:11 |
Tác giả: John Hagen (John Hagen) * |
Tác giả: Raymond Hettinger (Rhettinger) * |
Tác giả: Raymond Hettinger (Rhettinger) * |
Ngày: 2021-04-19 23:27 |
Lịch sử | Ngày | bộ | Người sử dụng |
Hoạt động | Args | bộ | 2022-04-11 & NBSP; 14: 59: 44 resolution: rejected messages: + msg391417 |
quản trị viên | GitHub: 88000 | bộ | 2021-04-20 & NBSP; 00: 32: 20 resolution: rejected -> (no value) messages: + msg391416 |
Benjamin.peterson | GitHub: 88000 | bộ | 2021-04-20 & NBSP; 00: 32: 20 Benjamin.peterson Trạng thái: Mở -> ĐóngResolution: DespckedMessages: + MSG391417 |
2021-04-19 & NBSP; 23: 27: 32 | Terry.reedy | bộ | Nosy: + Benjamin.peterson, Stutzbach |
2021-04-14 & NBSP; 12: 11: 28 | John Hagen | bộ | Nosy: + Benjamin.peterson, Stutzbach stage: patch review pull_requests: + pull_request24133 |
2021-04-14 & NBSP; 12: 11: 28 | John Hagen | Từ khóa: + PatchStage: Patch ReviewPull_Requests: + pull_request24133 |