欢迎访问宙启技术站
智能推送

使用Python编写一个简单的文件压缩工具

发布时间:2023-12-04 17:26:13

下面是一个使用Python编写的简单文件压缩工具的示例代码:

import zipfile
import os

def compress_files(output_file, *input_files):
    with zipfile.ZipFile(output_file, 'w') as zipf:
        for file in input_files:
            if os.path.isfile(file):
                zipf.write(file, os.path.basename(file))
            elif os.path.isdir(file):
                for root, dirs, files in os.walk(file):
                    for f in files:
                        filepath = os.path.join(root, f)
                        arcname = os.path.relpath(filepath, os.path.dirname(file))
                        zipf.write(filepath, arcname)

def main():
    # 压缩单个文件
    compress_files('output.zip', 'file.txt')

    # 压缩多个文件和文件夹
    compress_files('output.zip', 'file1.txt', 'file2.txt', 'folder')

    # 压缩文件和文件夹,并排除某些文件
    compress_files('output.zip', 'folder', 'file1.txt', 'file2.txt', exclude=['folder/subfolder/exclude.txt'])

if __name__ == '__main__':
    main()

上面的代码使用了Python的zipfile模块来实现文件压缩功能。compress_files函数接受一个压缩文件的输出路径和变长参数input_files,可以传入一个或多个需要压缩的文件或文件夹路径。压缩时,如果传入的是文件,则直接将文件写入到压缩文件中,如果传入的是文件夹,则遍历文件夹下的所有文件,并将其加入压缩文件中。

你可以根据需要对compress_files函数进行修改,以满足更多的需要,比如加入密码、添加评论等。你也可以根据具体的使用场景,将上述代码封装成一个独立的压缩工具类。

使用例子中展示了三种情况的压缩操作。第一个例子是压缩单个文件file.txtoutput.zip;第二个例子是同时压缩多个文件file1.txtfile2.txt和文件夹folderoutput.zip;第三个例子在第二个例子的基础上排除了文件folder/subfolder/exclude.txt

这个示例提供了一个简单的、可扩展的文件压缩工具的基础,你可以根据自己的需求进行修改和扩展。