python批量处理压缩文件
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批量处理压缩文件的更多相关文章
- python批量运行py文件
import os path="E:\\python" #批量的py文件路径 for root,dirs,files in os.walk(path): #进入文件夹目录 for ...
- Python脚本破解压缩文件口令(zipfile)
环境:Windows python版本2.7.15 Python中操作zip压缩文件的模块是 zipfile . 相关文章:Python中zipfile压缩文件模块的使用 我们破解压缩文件的口令也是用 ...
- Python中zipfile压缩文件模块的使用
目录 zipfile 压缩一个文件 解压文件 高级应用 利用 zipfile 模块破解压缩文件口令:Python脚本破解压缩文件口令 zipfile Python 中 zipfile 模块提供了对 z ...
- python批量改动指定文件夹文件名称
这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files ...
- python批量读取txt文件为DataFrame
我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...
- python批量处理excel文件数据
https://www.zhihu.com/question/39299070?sort=created 作者:水中柳影链接:https://www.zhihu.com/question/392990 ...
- 【Python】zlib压缩文件
import zlib import os ss = 's' * 1024 * 1024 #写入原始文件 file = open("src.dat", "wb" ...
- day6学python 生成器迭代器+压缩文件
生成器迭代器+压缩文件 readme的规范 1软件定位,软件的基本功能2运行代码的方法:安装环境,启动命令3简要的使用说明4代码目录结构说明,更详细点可以说明软件的基本原理5常见问题说明 ====== ...
- python批量创建txt文件,以demo.txt内的内容为文件名
#批量创建txt文件import sys,osa=open("demo.txt")n=0aList=[]for line in a.readlines(): aList.appen ...
随机推荐
- Java、Java SE、Java Web和Java EE的区别
刚接触Java对这些概念上的东西有点模糊,查了很多资料,想把它分享出来,要是哪里不对请大家指正(^_^) 1.Java 毫无疑问这就是门语言和C.C++.C#一样没什么好说的. 2.Java SE和J ...
- sysctl -p详解
个人一般sysctl -p 或sysctl -a比较多使用 sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发.IP碎片去除以及源路由检 ...
- [04] HEVD 内核漏洞之IntegerOverflow
作者:huity出处:https://www.cnblogs.com/huity35/p/11252574.html版权:本文版权归作者所有.文章在博客园.看雪.个人博客同时发布.转载:欢迎转载,但未 ...
- (11)ASP.NET Core 中的配置一(Configuration)
1.前言 ASP.NET Core在应用程序上引入Microsoft.Extensions.Configuration配置,可以支持多种方式配置,包括命令行配置.环境变量配置.文件配置.内存配置,自定 ...
- jsp的简介(1)
一.什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%&g ...
- 【Java例题】2.1复数类
1.定义复数类,包括实部和虚部变量.构造方法. 加减乘除方法.求绝对值方法和显示实部.虚部值的方法. 然后编写一个主类,在其主方法中通过定义两个复数对象来 显示每一个复数的实部值.虚部值和绝对值, 显 ...
- Golang高效实践之array、slice、map
前言 Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式.slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构 ...
- ASP.NET CORE系列【七】分析NetCore启动原理
前言 有很久一段时间没更新了,因为工作和家里的问题导致没能坚持, 现在开始会继续每周更新,主要是记录自己所学和一起讨论解决过的问题,一起成长, 为.net圈子添砖加瓦! 介绍 到目前为止应该很多同学已 ...
- python3学习-logging模块
1.logging模块的使用非常简单,引入模块就可以使用. import logging logging.debug('This is debug message') logging.info('Th ...
- java并发编程(十三)----(JUC原子类)引用类型介绍(CAS和ABA的介绍)
这一节我们将探讨引用类型原子类:AtomicReference, AtomicStampedRerence, AtomicMarkableReference.AtomicReference的使用非常简 ...