如何优化这段搬运图片的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)
crayfish 爱好人文艺术历史
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)
Cyberspace 你在害怕什么呀
1. 网友:世界最大的黑社会集团,就是一个人领着六个人带着二百多人招募八千万人控制十三亿人,只为确保五千多人的利益。
华国锋 严格坚持两个凡是
上面的做法是正确的。代码比正则表达式更可读,没必要换。
daryl000 Waiting for Life is Waiting for DIE
技术贴借个楼:
之前半抄半写的弄了一个下载器,里面这一段:

print ('\r' + '[DOWNLOADING] %.2f%% : %s ' %(float(size/ content_size * 100),'.'*int(size*50 /content_size),),end='')

用来显示下载进度,问问大佬,如何让这一段可以在python2.x版本下运行,python3可以运行,python2.x就报错,知识有限,自学能力严重不足,求大佬帮忙。谢谢
@daryl000,这下面是适用于Python 2.x的代码,你可以试一下。
print '\r' + '[DOWNLOADING] %.2f %% : %s ' % (float(size * 100 / content_size), '.' * int(size * 50 / content_size)),

如@Meltdown所说,Python 2中print后面不加()。另外,Python 2中也没有end='',可以通过在末尾加,代替。再者,Python 2中需要将float(size / content_size * 100)改写为float(size * 100 / content_size)才能正常运行。

要发言请先登录注册