如何优化这段搬运图片的Python代码?
代码是抄网上后魔改的,如何优化正则表达所在的那行代码?
顺代一提正在用Python汇总翻车新闻和微博谈到一个文件里,自己边学边写。
也请教下品葱的大佬。
顺代一提正在用Python汇总翻车新闻和微博谈到一个文件里,自己边学边写。
也请教下品葱的大佬。
import re
import time
from base64 import b64encode
from pathlib import Path
import pyperclip
import requests
url = 'https://api.imgur.com/3/image' # 备用 https://api.mashiro.top/imgur-api/3/image
def upload(url1):
return requests.post(url, headers={'Authorization': 'Client-ID 98cd21cdfc58130'},
data={'image': b64encode(open(url1, 'rb').read()), 'type': 'base64'}).text
PicDir = Path(r'C:\1') # 本地图片存储目录
a = []
for sub in ['jpeg', 'png', 'gif', 'apng', 'jpg', 'tif', 'bmp']:
for file in PicDir.glob('**/*.' + sub):
a.append(file)
a.append(a[1]) # 搬运微博谈调换图片顺序
del a[1]
b = ''
for img in a:
print(img)
res = 'https://' + repr(re.findall(re.compile('i.imgur.com.*?(?="})'), upload(img))).replace('\\', '')[2:-2]
print(res)
b += '[img]' + res + '[/img]\n'
time.sleep(0.5)
print('\n' + b)
pyperclip.copy(b)
for Dir in os.listdir(PicDir):
if Dir.split('.')[1] == 'jpeg':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'png':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'gif':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'apng':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'jpg':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'tif':
a.append(PicDir + '\\' + Dir)
elif Dir.split('.')[1] == 'bmp':
a.append(PicDir + '\\' + Dir)
这段代码可以优化成:
for Dir in os.listdir(PicDir):
if Dir.split('.')[1] in ['jpeg', 'png', 'gif', 'apng', 'jpg', 'tif', 'bmp']:
a.append(PicDir + '\\' + Dir)
import time
from pathlib import Path
from base64 import b64encode
import requests
SUFFIX_IMG = [".jpeg", ".png", ".gif", ".jpg"]
URL = "https://api.imgur.com/3/image"
DIRPIC = "/home/you/pic"
CID = "Client-ID 98cd21cdfc58130"
def upload(filepath, url_imgur, cid):
time.sleep(0.5)
with open(filepath, "r") as f:
result = requests.post(
url_imgur,
headers={"Authorization": cid},
data={"image": b64encode(f.read()), "type": "base64"},
).text
return result
def extract(text):
# 我打不开imgur的api页面,不知道返回的是什么
pass
def get_html(url_imgur, dir_pic, cid, suffix_img):
return "\n".join(
[
"方括号img方括号" + extract(upload(p, url_imgur, cid)) + "方括号/img方括号"
for p in Path(dir_pic).iterdir()
if p.is_file() and p.suffix in suffix_img
]
)
print(get_html(URL, DIRPIC, CID, SUFFIX_IMG))
valid_exts = ["jpeg", "png", "gif", "apng", "jpg", "tif", "bmp"]
for Dir in os.listdir(PicDir):
ext = Dir.split('.')[1]
if ext in ["jpeg", "png", "gif", "apng", "jpg", "tif", "bmp"]:
a.append(PicDir + '\\' + Dir)
上面的做法是正确的。代码比正则表达式更可读,没必要换。
技术贴借个楼:
之前半抄半写的弄了一个下载器,里面这一段:
print ('\r' + '[DOWNLOADING] %.2f%% : %s ' %(float(size/ content_size * 100),'.'*int(size*50 /content_size),),end='')
用来显示下载进度,问问大佬,如何让这一段可以在python2.x版本下运行,python3可以运行,python2.x就报错,知识有限,自学能力严重不足,求大佬帮忙。谢谢
之前半抄半写的弄了一个下载器,里面这一段:
print ('\r' + '[DOWNLOADING] %.2f%% : %s ' %(float(size/ content_size * 100),'.'*int(size*50 /content_size),),end='')
用来显示下载进度,问问大佬,如何让这一段可以在python2.x版本下运行,python3可以运行,python2.x就报错,知识有限,自学能力严重不足,求大佬帮忙。谢谢