Python之zipfile模块的使用,zipfile怎么读,1、判断是否是zip
Python之zipfile模块的使用,zipfile怎么读,1、判断是否是zip
1、判断是否是zip文件
#!/usr/bin/env python3# encoding: utf-8import zipfilefilenames = [‘tcp_server.py‘, ‘test.py‘, ‘test.zip‘]for filename in filenames: print(‘{:>15} {}‘.format(filename, zipfile.is_zipfile(filename)))zipfile_is_zipfile.py
运行效果
[[email protected] mnt]# python3 zipfile_is_zipfile.py tcp_server.py False test.py False test.zip True
2、查看zip里面的文件名
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘test.zip‘, ‘r‘) as zf: print(zf.namelist())zipfile_namelist.py
运行效果
[[email protected] mnt]# python3 zipfile_namelist.py [‘tcp_client.py‘, ‘tcp_server.py‘, ‘test.py‘]
3、查看zip里面文件的大小、文件名、修改时间等参数
#!/usr/bin/env python3# encoding: utf-8import zipfileimport datetimedef print_info(archive_name): with zipfile.ZipFile(archive_name) as zf: for info in zf.infolist(): print(info.filename) print(‘ Comment :‘, info.comment) mod_date = datetime.datetime(*info.date_time) print(‘ Modified :‘, mod_date) if info.create_system == 0: system = ‘Windows‘ elif info.create_system == 3: system = ‘Unix‘ else: system = ‘UNKNOWN‘ print(‘ System :‘, system) print(‘ Zip Version :‘, info.create_version) print(‘ Compressed :‘, info.compress_size, ‘bytes‘) print(‘ UnCompressed :‘, info.file_size, ‘bytes‘)if __name__ == ‘__main__‘: print_info(‘test.zip‘)zipfile_infolist.py
运行效果
[[email protected] mnt]# python3 zipfile_infolist.py tcp_client.py Comment : b‘‘ Modified : 2020-01-09 18:01:58 System : Windows Zip Version : 63 Compressed : 221 bytes UnCompressed : 301 bytestcp_server.py Comment : b‘‘ Modified : 2020-01-09 18:15:06 System : Windows Zip Version : 63 Compressed : 511 bytes UnCompressed : 996 bytestest.py Comment : b‘‘ Modified : 2020-01-09 16:58:52 System : Windows Zip Version : 63 Compressed : 206 bytes UnCompressed : 426 bytes
4、指定文件名查看zip里面的文件信息
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘test.zip‘) as zf: filenames = [‘test.py‘, ‘README.txt‘] for filename in filenames: try: info = zf.getinfo(filename) except KeyError: print(‘文件:{},不存在zip里面‘.format(filename)) else: print(‘文件名:{} 文件大小:{} bytes‘.format(filename, info.file_size))zipfile_getinfo.py
运行效果
[[email protected] mnt]# python3 zipfile_getinfo.py 文件名:test.py 文件大小:426 bytes文件:README.txt,不存在zip里面
5、查看zip里面文件的内容
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘test.zip‘) as zf: filenames = [‘test.py‘, ‘README.txt‘] for filename in filenames: try: data = zf.read(filename) except KeyError: print(‘文件:{},不存在zip里面‘.format(filename)) else: print(‘文件名:{} 文件内容:{}‘.format(filename, data))zipfile_read.py
运行效果
[[email protected] mnt]# python3 zipfile_read.py 文件名:test.py 文件内容:b"#!/usr/bin/env python3\r\n"文件:README.txt,不存在zip里面
6、增加文件zip压缩
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘write.zip‘,‘w‘) as zf: print(‘增加test.py压缩‘) zf.write(‘test.py‘)zipfile_write.py
运行效果
[[email protected] mnt]# python3 zipfile_write.py 增加test.py压缩[[email protected] mnt]# ll-rw-r--r-- 1 root root 278 Jan 10 11:37 write.zip-rw-r--r-- 1 root root 160 Jan 10 11:37 zipfile_write.py
7、设置压缩模式压缩文件
#!/usr/bin/env python3# encoding: utf-8import zipfiletry: import zlib compression = zipfile.ZIP_DEFLATEDexcept (ImportError, AttributeError): compression = zipfile.ZIP_STOREDmodes = { # set集合 zipfile.ZIP_DEFLATED: ‘deflated‘, zipfile.ZIP_STORED: ‘stored‘,}print(‘创建压缩文件‘)with zipfile.ZipFile(‘write_compression.zip‘, ‘w‘) as wf: mode_name = modes[compression] print(‘增加 test.py 文件压缩并且设置压缩模式‘, mode_name) wf.write(‘test.py‘, compress_type=compression)zipfile_write_compression.py
运行效果
[[email protected] mnt]# python3 zipfile_write_compression.py 创建压缩文件增加 test.py 文件压缩并且设置压缩模式 deflated[[email protected] mnt]# ll-rw-r--r-- 1 root root 256 Jan 10 14:11 write_compression.zip-rw-r--r-- 1 root root 542 Jan 10 14:11 zipfile_write_compression.py
8、压缩文件,并且修改被压缩的文件名
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘write_artcname.zip‘, ‘w‘) as wf: wf.write(‘test.py‘,arcname=‘artcle_name_test.py‘)zipfile_write_arcname.py
运行效果
[[email protected] mnt]# python3 zipfile_write_arcname.py [[email protected] mnt]# ll-rw-r--r-- 1 root root 302 Jan 10 14:17 write_artcname.zip-rw-r--r-- 1 root root 167 Jan 10 14:16 zipfile_write_arcname.py[[email protected] mnt]# unzip -l write_artcname.zip Archive: write_artcname.zip Length Date Time Name--------- ---------- ----- ---- 166 01-10-2020 11:35 artcle_name_test.py--------- ------- 166 1 file
9、从内存中获取数据,压缩为zip文件
#!/usr/bin/env python3# encoding: utf-8import zipfilemsg = ‘This Data did not exist in a file‘with zipfile.ZipFile(‘writestr.zip‘, ‘w‘, compression=zipfile.ZIP_DEFLATED) as zf: zf.writestr(‘from_string.txt‘, msg)with zipfile.ZipFile(‘writestr.zip‘, ‘r‘) as zf: print(zf.read(‘from_string.txt‘))zipfile_writestr.py
运行效果
[[email protected] mnt]# python3 zipfile_writestr.py b‘This Data did not exist in a file‘[[email protected] mnt]# ll-rw-r--r-- 1 root root 163 Jan 10 14:25 writestr.zip-rw-r--r-- 1 root root 312 Jan 10 14:25 zipfile_writestr.py
10、压缩数据,并且设置被压缩文件的时间等参数
#!/usr/bin/env python3# encoding: utf-8import zipfileimport timemsg = ‘This Data did not exist in a file‘with zipfile.ZipFile(‘writestr_zipinfo.zip‘, ‘w‘) as zf: info = zipfile.ZipInfo(‘from_string.txt‘, date_time=time.localtime(time.time())) info.compress_type = zipfile.ZIP_DEFLATED info.comment = ‘这是压缩的注释‘.encode(‘utf-8‘) info.create_system = 0 zf.writestr(info, msg)zipfile_writestr_zipinfo.py
运行效果
[[email protected] mnt]# python3 zipfile_writestr_info.py [[email protected] mnt]# unzip -l writestr_zipinfo.zip Archive: writestr_zipinfo.zip Length Date Time Name--------- ---------- ----- ---- 33 01-10-2020 14:36 from_string.txt这是压缩的注释--------- ------- 33 1 file
11、往压缩文件,增加文件继续压缩的示例
#!/usr/bin/env python3# encoding: utf-8import zipfileprint(‘创建压缩zip‘)with zipfile.ZipFile(‘append.zip‘, ‘w‘) as zf: zf.write(‘test.py‘)print(‘往append.zip文件增加新的文件‘)with zipfile.ZipFile(‘append.zip‘, ‘a‘) as af: af.write(‘test.py‘, arcname=‘new_test.py‘)print(‘增加压缩文件完成‘)zipfile_append.py
运行效果
[[email protected] mnt]# python3 zipfile_append.py 创建压缩zip往append.zip文件增加新的文件增加压缩文件完成[[email protected] mnt]# unzip -l append.zip Archive: append.zip Length Date Time Name--------- ---------- ----- ---- 166 01-10-2020 11:35 test.py 166 01-10-2020 11:35 new_test.py--------- ------- 332 2 files
12、查看压缩文件里面所有的目录和文件名
#!/usr/bin/env python3# encoding: utf-8import zipfilewith zipfile.ZipFile(‘example.zip‘, ‘r‘) as rf: print(rf.printdir())zipfile_printdir.py
运行效果
[[email protected] mnt]# python3 zipfile_printdir.py File Name Modified Sizeadd/ 2020-01-10 14:45:36 0add/test.zip 2020-01-10 09:58:18 1362add/write_artcname.zip 2020-01-10 14:17:44 302add/writestr.zip 2020-01-10 14:25:22 163content_update.txt 2020-01-09 11:53:32 336
13、利用zipfile模块,把py代码转为pyc并且压缩打包成zip文件
#!/usr/bin/env python3# encoding: utf-8import zipfileif __name__ == ‘__main__‘: with zipfile.PyZipFile(‘pyzipfile.zip‘, ‘w‘) as wf: wf.debug = 3 print(‘增加Python多个文件‘) wf.writepy(‘.‘) for name in wf.namelist(): print(name)zipfile_pyzipfile.py
运行效果
[[email protected] mnt]# python3 zipfile_pyzipfile.py 增加Python多个文件Adding files from directory .Adding test.pycAdding zipfile_pyzipfile.pyctest.pyczipfile_pyzipfile.pyc[[email protected] mnt]# unzip -l pyzipfile.zip Archive: pyzipfile.zip Length Date Time Name--------- ---------- ----- ---- 233 01-10-2020 14:57 test.pyc 349 01-10-2020 14:57 zipfile_pyzipfile.pyc--------- ------- 582 2 files
Python之zipfile模块的使用
相关内容
- python ETL工具 pyetl,python做ETL,pyetl是一个纯p
- Python打印A~Z的26个字母,你会怎样打印?,,上次研究
- 利用python画一棵漂亮的樱花树,turtle画图代码大全,此处
- Python-简单的爬虫语句,最简单的爬虫代码,今天做一个
- python模块operator操作符函数,operator的使用,operator函数
- python中根据时间获取周数,通过周数获取时间,,# 时间
- 用python计算圆周率,,from rando
- 基于Airtest实现python自动抢红包,用python编写微信领红包
- Python国内镜像源,docker国内镜像源,国内源:清华:ht
- Python_sniffer(网络嗅探器),sniffer使用教程,import soc
评论关闭