利用Python对文件进行解压缩

对文件进行解压缩是我们日常工作中最平常不过的行为了,压缩过的文件不仅可以节省磁盘空间,而且在网络传输中也可以节省不少时间。

Python为我们提供了zipfile模块,这使得我们可以十分方便地对文件进行解压缩操作,而且代码书写也十分简单:

对文件进行压缩:

from zipfile import ZipFile
import os


def get_all_file_paths(directory):
    file_paths = []

    # 把所有的文件夹以及子文件夹、以及文件全部搞出来
    for root, directories, files in os.walk(directory):
        for filename in files:
            # 得到完全路径
            filepath = os.path.join(root, filename)
            file_paths.append(filepath)

    return file_paths


def main():
    directory = './Junit'

    file_paths = get_all_file_paths(directory)

    print('Following files will be zipped:')
    for file_name in file_paths:
        print(file_name)

    with ZipFile('my_python_files.zip', 'w') as zip:
        for file in file_paths:
            zip.write(file)

    print('All files zipped successfully!')


if __name__ == "__main__":
    main()

输出:

Following files will be zipped:
./Junit\hamcrest-core-1.3.jar
./Junit\junit-4.11-javadoc.jar
./Junit\junit-4.11-sources.jar
./Junit\junit-4.11.jar
./Junit\junit-4.7.jar
All files zipped successfully!

不过这个算法的压缩率貌似不是很高,至少在这个文件上跟360比还是差100KB。

对压缩文件进行解压:

from zipfile import ZipFile

file_name = "Junit 4.11.zip"

with ZipFile(file_name, 'r') as zip:
    # printing all the contents of the zip file
    zip.printdir()

    print('Extracting all the files now...')
    zip.extractall()
    print('Done!')

输出:

File Name                                             Modified             Size
Junit/                                         2013-04-22 20:51:10            0
Junit/hamcrest-core-1.3.jar                    2013-04-22 19:04:48        45024
Junit/junit-4.11-javadoc.jar                   2013-04-22 19:04:00       379344
Junit/junit-4.11-sources.jar                   2013-04-22 19:03:42       151329
Junit/junit-4.11.jar                           2013-04-22 19:03:32       245039
Junit/junit-4.7.jar                            2013-04-22 19:04:00       232354
Extracting all the files now...
Done!
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值