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
本文版權歸作者和博客園共有,歡迎轉載、交流,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,如果覺得本文對您有益,歡迎點贊、探討。