学会python——文件压缩(python实例十一)

目录

1、认识Python

2、环境与工具

2.1 python环境

2.2 Visual Studio Code编译

 3、文件压缩

3.1 代码构思

3.2 代码示例

3.3 运行结果

4、总结


1、认识Python

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字或标点符号,它具有比其他语言更有特色的语法结构。

 

2、环境与工具

2.1 python环境

在Windows上使用命令行窗口查看所安装的python版本

python --version

 

2.2 Visual Studio Code编译

Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。

 3、文件压缩

3.1 代码构思

使用get_zipinfo()函数获取文件信息,使用zip_file()函数遍历文件,对每个文件和目录进行压缩

3.2 代码示例

import zipfile
import os

# 获取压缩文件信息
def get_zipinfo(zipfile_name):
    with zipfile.ZipFile(zipfile_name, 'r') as zfile_obj:
        zipfile_info = zfile_obj.infolist()
    return zipfile_info

# 压缩文件夹
def zip_file(path):
    zipname = os.path.basename(path) + ".zip"
    with zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED) as zipfile_obj:
        print("正在压缩文件...")
        # 依次将文件和文件夹进行压缩
        for cur_dir, list_dir, list_file in os.walk(path, topdown=False):
            for dir_file_name in list_dir:
                dir_name = os.path.join(cur_dir, dir_file_name)
                print('正在压缩文件夹:', dir_name)
                zipfile_obj.write(dir_name, arcname=os.path.relpath(dir_name, path))
            for dir_file_name in list_file:
                file_name = os.path.join(cur_dir, dir_file_name)
                print('正在压缩文件:', file_name)
                zipfile_obj.write(file_name, arcname=os.path.relpath(file_name, path))
    print(f"压缩完成,生成的压缩文件为: {zipname}")


if __name__ == "__main__":
    # 测试目录,可以通过复制计算机中的任意目录或自行创建进行测试
    path_name = 'testdir'
    zip_file(path_name)

    # 分割线
    print('-' * 60)

    zip_name = 'testdir.zip'
    # 调用函数读取压缩文件的信息
    zip_info = get_zipinfo(zip_name)
    for info in zip_info:
        print('文件(目录)名:', info.filename, '压缩前尺寸:', round(info.file_size / 1024, 0), 'k 压缩后尺寸:', round(info.compress_size / 1024, 0), 'k')

    print('_' * 60)
  

3.3 运行结果

4、总结

上述代码直观的展示了.zip格式文件的压缩过程,帮助理解对文件格式的编辑。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值