介绍python批量解压缩压缩文件的实例代码。 代码如下所示。
#/usr/pgddxmy/python # coding=utf-8 importos,sys
importzipfileopen _ path=' e :\ data ' save _ path=' e :\ data ' OS.chdir (open _ path ) ) )。
转到路径
#首先,打开zipfile模块中指定位置的zip文件
#传递的文件名列表、列表文件所在的路径以及存储路径defdecompression(files,file_path,save_path ) :
OS.getcwd(#当前路径OS.chdir ) ) file_path ) #将移动到路径
for file_name in files:
打印(file _ name )为
确定是否要解压缩r=zipfile.is_zipfile(file_name ) #文件
if r:
读取zpfd=zipfile.zipfile(file_name )压缩文件
导航到OS.chdir(save_path ) #存储路径
zpfd.extractall ()
zfd.close(deffiles_save ) open_path ) :
for file_path、sub_dirs、filesinOS.walk(open_path ) :#获取所有文件名和路径
print(file_path,sub_dirs,files ) )。
decompression(files,file_path,save _ path (files _ save ) open_path ) ) ) ) ) ) ) ) )
查看以下代码用python批量解压
#! /usr/pgddxmy/python
#-* -编码: utf-8-* -
“”createdonjun 6,2019
@author: carson
“”'
import os
导入re
导入压缩文件
导入字符串
#以下3行是为了解决编码问题
导入系统
读(sys ) )。
sys.setdefaultencoding(utf8 ) )。
file _ path=r '/users/qcq/downloads/bills '
file _ out=r '/users/qcq/downloads/qcq.txt '
正则表达式匹配三个项目:基本费用、信息费、长途费用。
pattern=re.compile(r'd.d ' ) )。
phone_number_line=1 #标记文件中的第一行是电话号码行
real_bill_line=7 #正文开始
“”'
1 .代码的第一部分首先重复给定的文件目录,获取要处理的zip文件,存储在一个列表中,为以后的文件处理服务。 这里主要使用os.walk重复目录,并使用os.path.join连接两个目录。
“”'
file_name_list=[]
for dirpath,dirnames,filenamesinOS.walk(file_path ) :
for file_name in filenames:
iffile_name.endswith(.zip ) ) :
TEMP_path=OS.path.join(Dirpath,file_name ) ) )。
file _ name _ list.append (temp _ path )
“”'
2 .对获得的上述文件进行了排序,使输出顺序整齐。
“”'
sorted(file_name_list ) )为
“”'
3 .正文部分
“”'
withopen(file_out,' w ' ) as f_out:
for zip _ file infile _ name _ list :
withzipfile.zipfile(zip_file ) as f:
data={}
fornameoffileunderzipinf.namelist () :
count=1
contents=stringio.stringio (f.read ) nameoffileunderzip ) )
sum_all=0.0
内容在线:
ifcountphone _ number _ lineandcountreal _ bill _ line 3360
count =1
continue
if phone _ number _ line==count :
phone_number=line.split(u ':' ) [1]
count =1
continue
sum_all=sum(map(float,pattern.findall ) line ) )
data [ phone _ number.strip (]=sum _ all
f_out.write(zip_file'n ' ) )。
for key,valueinsorted(data.items ),key=lambda d:d[0] ) :
f _ out.write (key ' : ' str (value ) (n ) )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#coding=utf-8
(甄码农python码
使用zipfile进行目录压缩、解压缩功能
import os,os.path
导入压缩文件
efzip_dir(dirname,zipfilename ) :
文件列表=[ ]
IFOS.Path.isfile(Dirname ) :
filelist.append(dirname )
else :
for root,dirs,filesinOS.walk,dirname,
for name in files:
filelist.append(OS.path.join ) root,name ) )
ZF=zipfile.zipfile(zipfilename,' w ',zipfile.zlib.DEFLATED ) ) )。
for tar in filelist:
ARCname=tar[Len(Dirname ) :]
#打印arc name
ZF.write(tar,arcname ) )。
zf.close () )
efunzip_file(zipfilename,unziptodir ) :
ifnotOS.path.exists(unziptodir ) : OS.mkdir (unzip todir,0777 ) )。
ZF obj=zipfile.zipfile (zip filename ) )。
for name in zfobj.namelist () :
name=name.replace('','/' ) )。
ifname.Endswith('/' ) :
OS.mkdir(OS.path.join ) unziptodir,name ) )
else:
ext _ filename=OS.path.join (unzip todir,name ) ) ) )。
ext _ dir=OS.path.dirname (ext _ filename ) )。
ifnotOS.path.exists(ext_dir ) : OS.mkdir (ext _ dir,0777 ) )。
outfile=open(ext_filename,' wb ' ) )。
outfile.write(ZFobj.read ) name ) )
outfile.close (
if __name__=='__main__':
zip _ dir (r ' e :/python/learning ',r ' e :/python/learning/zip.zip ' ) )
unzip _ file (r ' e :/python/learning/zip.zip ',r'E:/python/learning2' ) )
总结
以上是编辑介绍的python批量解压缩压缩文件的实例代码。 我希望对大家有帮助。 如果大家有什么疑问的话请发信息。 编辑马上给大家回信。