以下是使用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录