博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
压缩文件批量处理(附Python脚本代码)
阅读量:4583 次
发布时间:2019-06-09

本文共 2466 字,大约阅读时间需要 8 分钟。

python批量处理压缩文件

博客小序:在数据的处理中,下载的数据很有可能是许多个压缩文件,自己一个一个解压较为麻烦,最近几日自己在处理一次下载的数据时,遇到大量的压缩数据需要处理,于是利用python进行了处理,特撰此博文以记之。

参考博客:

1.脚本处理情况说明

本实例中,需要处理的压缩数据是分省的数据,每个省由若干数量不同的压缩包构成,数据具体情况见截图,本脚本主要的任务有两个:

1.将压缩文件中需要的(xxxxxdem.tif)数据解压提取出来
2.将提取出来的数据仍按照省份进行存储
1539550-20190825093822098-1868261401.png
1539550-20190825094645883-160431865.png
1539550-20190825094722264-381816882.png
1539550-20190825094754448-1955227169.png

2.脚本代码

#添加一个计时器import timestart = time.time()import osimport shutilimport globimport zipfiledef un_zip(all_o_files,new_folder_dir,key_words):    # 读取原文件夹下的压缩文件    for i in all_o_files:        new_file = new_folder_dir + "\\" + os.path.basename(i)        if os.path.exists(new_file):            shutil.rmtree(new_file)            os.mkdir(new_file)        else:            os.mkdir(new_file)        all_zip_files = glob.glob(i + "\\*.zip")        # 对于每个压缩文件        for z in all_zip_files:        # 对没有损毁的压缩包进行解压            try:                zip_data = zipfile.ZipFile(z)                a_name = zip_data.namelist()                for name in a_name:                    if (name.find(key_words)) > -1:                        try:                            zip_data.extract(name, new_file)                        except:                            print(z + "解压失败")                            pass                    print(z + "解压完成!!!!!!!!")                zip_data.close()            except:                bad_file.append(z)                print(z + "文件已损毁")        tif_file = glob.glob(new_file + "\\" + "*")        for file in tif_file:            tif_datas = glob.glob(file + "\\"+ "*.tif")            for tif_data in tif_datas:                shutil.move(tif_data, new_file)            shutil.rmtree(file)o_folder_dir = "D:\\cnblogs\\data\\china"all_o_files = glob.glob(o_folder_dir + "\\*")#选择新文件存储的位置,如果在源文件的目录下则不要自己手动创建,new_folder_dir = "D:\\cnblogs\\data\\china_unzip"if os.path.exists(new_folder_dir):    shutil.rmtree(new_folder_dir)    os.mkdir(new_folder_dir)else:    os.mkdir(new_folder_dir)bad_file = []#需要解压的出来的文件名称中通有的名字特征,最好是名称结尾的,如.tif等表示文件类型的key_words = "dem.tif"un_zip(all_o_files,new_folder_dir,key_words)print("全部解压完毕!!!!!!!")print("损毁的压缩文件包括如下:")print(bad_file)end = time.time()print ("程序运行时间{:.2f}分钟".format((end-start)/60.0))

3.问题总结

1.由于开始时没有考虑压缩文件存在损毁的情况,所以第一次写出来的脚本存在一定的问题,也提醒自己要注意脚本编写过程中可能遇到的异常情况,适当的使用try,except来捕获可能出现的问题

2.本代码只考虑了.zip类型的压缩文件,还有其他形式的压缩文件暂未考虑,未来有机会遇到再补充。


本文作者:DQTDQT

限于作者水平有限,如文中存在任何错误,欢迎不吝指正、交流。

联系方式:

QQ:1426097423
E-mail:duanquntaoyx@163.com

本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,如果觉得本文对您有益,欢迎点赞、探讨。

转载于:https://www.cnblogs.com/xsman/p/11406934.html

你可能感兴趣的文章
iOS中通讯录的开发
查看>>
怎么让table中的<td>内容向上对齐
查看>>
[Java] 遍历HashMap和HashMap转换成List的两种方式
查看>>
mongodb
查看>>
LeetCode 46. Permutations
查看>>
jmeter- 性能测试3:聚合报告(Aggregate Report )
查看>>
JavaScript高级程序设计---学习笔记(二)
查看>>
vim 插件的学习
查看>>
Uncaught SyntaxError: Unexpected token ILLEGAL
查看>>
一个预处理定义的问题
查看>>
ANDROID L——Material Design综合应用(Demo)
查看>>
自我介绍以及关于软件工程的问题
查看>>
struts (一)
查看>>
【新番推荐】工作细胞
查看>>
NYOJ 16 矩形嵌套
查看>>
Leetcode中的SQL题目练习(二)
查看>>
dubbo 集群容错源码
查看>>
Collection接口的子接口——Queue接口
查看>>
LINUX安装NGINX
查看>>
服务器启动项目抛错 没有到主机的路由
查看>>