用python3写一个使用pigz打包自定义目录下文件输出到自定义目录下的代码
以下是使用Python3编写的使用pigz打包自定义目录下文件输出到自定义目录下的代码:
import os
import subprocess
def compress_directory(input_dir, output_dir, compression_level=6):
"""
使用pigz压缩输入目录,并将压缩文件输出到输出目录中。
参数:
input_dir (str): 要压缩的目录路径。
output_dir (str): 压缩文件输出的目录路径。
compression_level (int): 压缩级别,1-9之间的整数。
"""
# 确保输入目录存在
if not os.path.isdir(input_dir):
raise ValueError(f"{input_dir} 不是一个目录。")
# 确保输出目录存在
if not os.path.isdir(output_dir):
os.makedirs(output_dir)
# 构建压缩文件名
input_dir_name = os.path.basename(input_dir)
output_filename = f"{input_dir_name}.tar.gz"
output_path = os.path.join(output_dir, output_filename)
# 检查输出文件是否已经存在
if os.path.isfile(output_path):
raise ValueError(f"{output_path} 已经存在。")
# 构建pigz命令行参数
cmd_args = [
"pigz",
"-c", # 将压缩文件输出到stdout
f"-{compression_level}", # 压缩级别
"-p", "4", # 并行度
input_dir, # 要压缩的目录
]
# 调用pigz命令行工具
with open(output_path, "wb") as output_file:
subprocess.check_call(cmd_args, stdout=output_file)
print(f"已经将目录 {input_dir} 压缩到 {output_path}。")
# 示例用法
if __name__ == "__main__":
input_dir = "/path/to/input/directory"
output_dir = "/path/to/output/directory"
compression_level = 6
compress_directory(input_dir, output_dir, compression_level)
在示例用法中,将需要压缩的目录路径和输出路径以及压缩级别传递给 compress_directory
函数即可完成压缩
原文地址: http://www.cveoy.top/t/topic/c4jg 著作权归作者所有。请勿转载和采集!