Python实现CSV文件压缩为ZIP格式的自定义函数开发求助
CSV转ZIP压缩包Python函数实现
以下实现仅依赖Python内置标准库,无需额外安装第三方包,适合新手直接使用。
完整函数代码
import os import zipfile def csv_to_zip(source_dir: str, source_csv_name: str, target_dir: str, target_zip_name: str) -> None: # 拼接得到源CSV的完整绝对路径 source_csv_path = os.path.join(source_dir, source_csv_name) # 检查源CSV文件是否存在 if not os.path.exists(source_csv_path): raise FileNotFoundError(f"指定的CSV文件不存在:{source_csv_path}") # 如果目标路径不存在就自动创建 os.makedirs(target_dir, exist_ok=True) # 拼接得到目标ZIP的完整绝对路径 target_zip_path = os.path.join(target_dir, target_zip_name) # 执行压缩操作 with zipfile.ZipFile(target_zip_path, "w", zipfile.ZIP_DEFLATED) as zipf: # arcname参数指定压缩包内的文件名,设为源文件名即可避免打包多层目录结构 zipf.write(source_csv_path, arcname=source_csv_name) print(f"压缩完成,ZIP包已保存到:{target_zip_path}")
函数参数说明
source_dir:源CSV文件所在的文件夹路径,例如"/home/user/csv_files"或者"./source"source_csv_name:要压缩的CSV文件的完整文件名,必须包含.csv后缀,例如"sales_data.csv"target_dir:生成的ZIP压缩包要存放的文件夹路径,例如"/home/user/zip_output"或者"./output"target_zip_name:生成的ZIP压缩包的完整文件名,必须包含.zip后缀,例如"sales_data_2024.zip"
调用示例
你可以直接在脚本下方添加以下代码测试使用:
# 示例:将当前目录下source文件夹里的test.csv,压缩后存到当前目录output文件夹里的test.zip if __name__ == "__main__": csv_to_zip( source_dir="./source", source_csv_name="test.csv", target_dir="./output", target_zip_name="test.zip" )
注意事项
- 路径传入相对路径时,相对的是你运行Python脚本时的当前工作目录
- 生成的ZIP包使用标准DEFLATED压缩算法,所有主流解压软件都可以正常打开
- 如果要压缩多个CSV文件,只需要在
with代码块里多次调用zipf.write()传入其他CSV路径即可
内容的提问来源于stack exchange,提问作者Χρήστος Γουμενίδης
相关产品推荐
相关产品推荐

