python批量处理压缩文件

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

参考博客:

https://blog.csdn.net/qq_38697681/article/details/79424259

https://blog.csdn.net/brucewong0516/article/details/79064384

1.脚本处理情况说明

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

1.将压缩文件中需要的(xxxxxdem.tif)数据解压提取出来

2.将提取出来的数据仍按照省份进行存储







2.脚本代码

#添加一个计时器
import time
start = time.time() import os
import shutil
import glob
import zipfile def 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

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

python批量处理压缩文件的更多相关文章

  1. python批量运行py文件

    import os path="E:\\python" #批量的py文件路径 for root,dirs,files in os.walk(path): #进入文件夹目录 for ...

  2. Python脚本破解压缩文件口令(zipfile)

    环境:Windows python版本2.7.15 Python中操作zip压缩文件的模块是 zipfile . 相关文章:Python中zipfile压缩文件模块的使用 我们破解压缩文件的口令也是用 ...

  3. Python中zipfile压缩文件模块的使用

    目录 zipfile 压缩一个文件 解压文件 高级应用 利用 zipfile 模块破解压缩文件口令:Python脚本破解压缩文件口令 zipfile Python 中 zipfile 模块提供了对 z ...

  4. python批量改动指定文件夹文件名称

    这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files ...

  5. python批量读取txt文件为DataFrame

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  6. python批量处理excel文件数据

    https://www.zhihu.com/question/39299070?sort=created 作者:水中柳影链接:https://www.zhihu.com/question/392990 ...

  7. 【Python】zlib压缩文件

    import zlib import os ss = 's' * 1024 * 1024 #写入原始文件 file = open("src.dat", "wb" ...

  8. day6学python 生成器迭代器+压缩文件

    生成器迭代器+压缩文件 readme的规范 1软件定位,软件的基本功能2运行代码的方法:安装环境,启动命令3简要的使用说明4代码目录结构说明,更详细点可以说明软件的基本原理5常见问题说明 ====== ...

  9. python批量创建txt文件,以demo.txt内的内容为文件名

    #批量创建txt文件import sys,osa=open("demo.txt")n=0aList=[]for line in a.readlines(): aList.appen ...

随机推荐

  1. 关于Servlet小总结

    目录 Servlet Servlet简介 Servlet简单实现 Servlet注解 Servlet生命周期 启动时加载Servlet Servlet客户端 HTTP请求的结构 Servlet服务器 ...

  2. 一文搞懂List 、List<Object>、List<?>的区别以及<? extends T>与<? super T>的区别

    前段时间看<Java编程思想>泛型时对 <? extends T>与<? super T>很懵逼,接着看到泛型与集合的更蒙蔽,随后又翻开<码出高效>时, ...

  3. java的System.currentTimeMillis()和System.nanoTime

    纳秒 ns(nanosecond):纳秒, 时间单位.一秒的10亿分之一,即等于10的负9次方秒.常用作 内存读写速度的单位,其前面数字越小则表示速度越快.   1纳秒=1000 皮秒   1纳秒 = ...

  4. 日常用shell命令

    递归更改文件夹权限:chmod -R 767 文件名 mac启动apache sudo apachectl start/restart mac停止apache sudo apachectl stop ...

  5. android蓝牙通讯开发(详细)

    新建一个工程之后,我们可以先看到界面左边的项目栏,我们可以看到,除了app目录以外,大多数的文件和目录都是自动生成的,我们也不需要对他们进行修改,而app目录之下的文件才是我们工作的重点.下面,我先对 ...

  6. WeihanLi.Npoi 导出支持自定义列内容啦

    WeihanLi.Npoi 导出支持自定义列内容啦 Intro 之前也有网友给提出过希望列合并或者自定义列内容的 issue 或请求,起初因为自己做 WeihanLi.Npoi 这个扩展的最初目的是导 ...

  7. Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)

    每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)H ...

  8. java在src/test/resourse下读取properties文件

    package com.jiepu; import java.io.File; import java.net.URISyntaxException; import java.util.Map; im ...

  9. 基于python的Elasticsearch索引的建立和数据的上传

    这是我的第一篇博客,还请大家多多指点 Thanks ♪(・ω・)ノ         今天我想讲一讲关于Elasticsearch的索引建立,当然提前是你已经安装部署好Elasticsearch. ok ...

  10. Hadoop学习(7)-hive的安装和命令行使用和java操作

    Hive的用处,就是把hdfs里的文件建立映射转化成数据库的表 但hive里的sql语句都是转化成了mapruduce来对hdfs里的数据进行处理 ,并不是真正的在数据库里进行了操作. 而那些表的定义 ...