起因
由於公司需求,需要從公司後臺批量下載識別異常圖片的圖片壓縮包,如果手動下載的話需要每個鏈接進行手動更改,對於鏈接手動更改的話容易看的頭暈眼花,並且對於大批量壓縮包下載的話效率很低,所以我想到將該項多重複機械化的操作用python完成。
分析
首先分析後臺鏈接:從公司系統鼠標右鍵獲取圖片鏈接
將鏈接寫入old_address.txt文件,一個鏈接一行,然後拼接鏈接,將新地址寫入new_address.txt,可以看到兩個鏈接就開頭跟結尾有點不同,所以我們進行字符串簡單處理一下就行了。
字符處理
def get_new_url():
old_url=''
new_url=''
with open('old_address.txt','r') as fr:
for line in fr.readlines():
old_url=line
# 拼接新地址
old_url=old_url[0:16]+'-image-production-'+line[23:]
pattern = r'[/]' # 定義分隔符
result = re.split(pattern, old_url) # 以pattern的值 分割字符串
new_url+=old_url.replace('/'+result[-1],'.zip\n')
with open('new_address.txt','w') as fr:
fr.write(new_url)
print('網址拼接成功')
步驟
- 系統手動獲得鏈接寫入txt,處理鏈接,寫入txt。
- 按行讀取鏈接,下載zip文件
- 批量解壓文件
- 需要將圖片上傳後臺,要求文件名不能有空格,批量重命名文件
將兩鏈接處理完寫入txt文件後開始下載測試一下。
old_address.txt
new_address.txt
下載測試
def get_zip():
#獲取新網址
get_new_url()
if not os.path.exists('zip'):
os.makedirs('zip')
with open('new_address.txt','r') as fr:
for line in fr.readlines():
try:
line=line.strip('\n')
file_name=line.split('/')[-1:][0]
r = requests.get(line)
with open("zip/%s"%file_name, "wb") as fr:
fr.write(r.content)
time.sleep(2)
print('下載壓縮文件成功')
except:
continue
un_zip()
print('批量解壓完成')
批量解壓
def un_zip():
"""
批量解壓文件
"""
filelist=os.listdir('zip')
for i in filelist:
zip_file = zipfile.ZipFile(r'zip/%s'%i)
for names in zip_file.namelist():
zip_file.extract(names,'unzip/'+i)
zip_file.close()
批量重命名
#批量重命名文件
def new_file_name():
filelist=os.listdir('06.23lingshiyichangchongkuang')
path=r"C:\Users\Administrator\Desktop\get_error_img\06.23lingshiyichangchongkuang"
n=10
for i in filelist:
i='\\%s'%i
#設置新文件名
newname='\\%s'%(str(n)+'.jpg')
#用os模塊中的rename方法對文件改名
os.rename(path+i,path+newname)
n+=1
使用幫助
"""
使用方法
首先在智能系統複製圖片路徑寫入old_address.txt一個鏈接一行
然後看目錄下是否有zip與unzip文件,有的話將其刪除,沒有就不用管
然後點擊運行自動下載解壓
下載完成後需要自己手動將unzip文件夾中的每個文件夾下的四張圖片複製到一個文件夾下,然後運行批量重命名文件,需要自己手動改路徑
因爲標註系統不能有空格名,windows重命名會帶空格
"""