Python如何按指定顺序自动批量上传文件夹图片至Twitter
解答
Python完全可以实现你需要的按固定顺序自动批量上传指定文件夹内图片的需求,以下是可直接落地的实现方案。
核心实现思路
- 遍历目标文件夹内的所有文件,通过正则匹配提取
image#N.jpg文件名中的数字序号,以整数序号作为排序依据,避免字符串排序导致的顺序错乱(比如字符串排序规则下image#10.jpg会排在image#2.jpg之前,不符合序号递增的要求) - 按排序后的文件列表依次调用已有的单图上传逻辑,增加短间隔等待避免触发平台接口限流
- 优化路径处理逻辑,兼容Windows、macOS、Linux不同操作系统的路径分隔符规则
- 删除原有代码中未使用的冗余导入,精简代码结构
改造后可直接运行的代码
import os import re import time import tweepy # 平台鉴权配置 consumer_key = 'XXXX' consumer_secret = 'XXXX' access_token = 'XXXX' access_token_secret = 'XXXX' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True) def upload_media(filename): # 上传图片素材 media = api.media_upload(filename) # 取不含扩展名的文件名作为推文文本,可根据需求自定义修改 file_basename = os.path.basename(filename) tweet_text = os.path.splitext(file_basename)[0] # 发布推文 api.update_status(tweet_text, media_ids=[media.media_id_string]) if __name__ == "__main__": # 配置项:修改为你的图片存放的文件夹路径 IMAGE_FOLDER = "./your_image_folder" # 匹配image#数字.jpg格式的文件名,提取序号 filename_pattern = re.compile(r'image#(\d+)\.jpg$', re.IGNORECASE) image_list = [] # 遍历文件夹收集符合规则的图片 for filename in os.listdir(IMAGE_FOLDER): match_res = filename_pattern.match(filename) if match_res: # 存储(数字序号, 文件完整路径)用于排序 img_index = int(match_res.group(1)) full_path = os.path.join(IMAGE_FOLDER, filename) image_list.append((img_index, full_path)) # 按数字序号从小到大排序 image_list.sort(key=lambda x: x[0]) # 依次上传所有图片 for img_index, img_path in image_list: print(f"正在上传第{img_index}张图片:{img_path}") upload_media(img_path) # 上传间隔2秒,可根据实际需求调整,避免触发限流 time.sleep(2) print(f"所有图片上传完成,共计{len(image_list)}张")
使用说明
- 将代码中
IMAGE_FOLDER变量的值修改为你存放图片的实际文件夹路径即可运行 - 如果不需要用文件名作为推文内容,可以直接修改
upload_media函数内tweet_text的赋值逻辑,自定义推文文案 - 如果需要调整上传间隔,修改
time.sleep(2)中的数字即可,单位为秒 - 代码会自动跳过文件夹内不符合
image#N.jpg命名规则的文件,不需要手动做额外的文件清理
内容的提问来源于stack exchange,提问作者Qasim
相关产品推荐
相关产品推荐

