Python 分卷压缩文件夹
时间: 2024-04-06 13:27:03 浏览: 59
在Python中,可以使用zipfile模块来进行分卷压缩文件夹的操作。下面是一个简单的示例代码:
```python
import zipfile
import os
def split_compress_folder(folder_path, output_path, max_size):
# 创建一个新的zip文件
zip_file = zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED)
# 遍历文件夹中的所有文件和子文件夹
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
# 将文件添加到zip文件中
zip_file.write(file_path, os.path.relpath(file_path, folder_path))
# 关闭zip文件
zip_file.close()
# 检查zip文件大小是否超过最大限制
if os.path.getsize(output_path) > max_size:
# 如果超过最大限制,则进行分卷压缩
split_compress_file(output_path, max_size)
def split_compress_file(file_path, max_size):
# 获取文件名和扩展名
file_name, file_ext = os.path.splitext(file_path)
# 计算分卷数量
num_parts = (os.path.getsize(file_path) + max_size - 1) // max_size
# 分卷压缩
with open(file_path, 'rb') as input_file:
for i in range(num_parts):
part_file_path = f"{file_name}_{i+1}{file_ext}.zip"
with zipfile.ZipFile(part_file_path, 'w', zipfile.ZIP_DEFLATED) as output_file:
output_file.writestr(f"{file_name}{file_ext}", input_file.read(max_size))
# 示例用法
folder_path = '/path/to/folder' # 要压缩的文件夹路径
output_path = '/path/to/output.zip' # 压缩后的输出文件路径
max_size = 1024 * 1024 * 100 # 每个分卷的最大大小(这里设置为100MB)
split_compress_folder(folder_path, output_path, max_size)
```
上述代码中,`split_compress_folder`函数用于压缩整个文件夹,并在超过指定大小时进行分卷压缩。`split_compress_file`函数用于将单个文件进行分卷压缩。
阅读全文