1.批量删除文件夹内所有.java后缀名的文件
import os
dir1 = r'G:\github\CmProject\app\src\main\aidl\android\content\pm'
def delete_files(dir):
for f in os.listdir(dir):
file = os.path.join(dir, f)
if os.path.isdir(file):
delete_files(file)
elif os.path.isfile(file):
if os.path.splitext(file)[1] == '.java':
print('remove %s' % file)
os.remove(file)
delete_files(dir1)
2.批量下载一个文件夹下的所有文本文件中的图片
项目中突然有这样一个需求,要把接口数据做成离线的,这时得先把正常的接口返回的数据保存成一个个的.json文件保存到本地,然后接口返回的数据里的图片也要做一份离线的,以防设备无网络时加载不到,这时如果接口很多,离线文件就会很多,那么要把离线文件里的一个个图片url都下载成图片保存到本地,可以把离线文件用文本编辑器打开,然后一个一个的把图片url复制到浏览器里打开,右键另存为,但是这种操作的效率是无法让人忍受的,脚本搞之:
import os
import re
import urllib.request
import socket
from time import sleep
file_path = r'E:\android\code\HmUitls\netutils\src\main\assets'
img_path = r'E:\android\code\HmUitls\netutils\src\main\assets\img'
# http://zj-drs.tvos.wasu.cn/pds//image/2018/5/11170231580history_bg.png
def init():
global count
global error_img_list
count = 0
error_img_list = []
socket.setdefaulttimeout(2) # 设置超时时间为2秒
if not os.path.exists(img_path): # 判断要用来保存图片的文件夹是否存在,不存在就创建
os.makedirs(img_path)
get_json_file(file_path)
def get_json_file(file_path):
global count
for f in os.listdir(file_path): # 遍历获取目标文件夹下的文件
file = os.path.join(file_path, f)
if os.path.isfile(file) and os.path.splitext(f)[1] == '.json': # 如果是文件且是.json格式的文件
print(file)
get_img_url(file)
print('共有%d 张图片,下载失败%d张' % (count, len(error_img_list)))
def get_img_url(file):
global count
# file = r'E:\android\code\HmUitls\netutils\src\main\assets\tab5a625bqt5Lit5b+D.json'
with open(file, 'r', encoding='UTF-8') as f:
finditer = getRex().finditer(f.read()) # 正则匹配文中图片地址
for iter in finditer:
print('url: %s fileName: %s' % (iter.group(0), iter.group(1)))
count = count + 1
downloadpic(iter.group(0), os.path.join(img_path, iter.group(1)))
sleep(0.2)
def getRex():
rehttp = re.compile(r'http://zj-drs.+?/(\w+\.[jpgn]{3})')
return rehttp
def downloadpic(img_url, file_name):
global error_img_list
try:
urllib.request.urlretrieve(img_url, filename=file_name) # 下载图片
print('第 %d 张图片下载成功!' % count)
except Exception as e:
print('第 %d 张图片下载失败!' % count)
error_img_list.append(img_url)
print('download error:', e)
if __name__ == "__main__":
init()