python - 为什么我的 python instagram 发布机器人会出现这个错误?
问题描述
我想制作一个从图片文件夹中上传随机图片的机器人。这发生在预定的时间(出于测试原因,我将其设置为 0.2 分钟)。机器人应该上传一个名为 pic.jpg 的文件,然后删除该文件并将一个随机文件重命名为 pic.jpg。
from instabot import Bot
import schedule
import time
import os
import random
bot = Bot()
bot.login(username = "XXX",password = "XXX")
def upload():
bot.upload_photo("pics/pic.jpg",caption =" ")
delren()
path = r"pics/"
old_file_name = random.choice([
x for x in os.listdir(path)
if os.path.isfile(os.path.join(path, x))
])
new_file_name = os.path.join("pics/", "pic.jpg")
def delren():
if os.path.exists("pics/pic.jpg"):
os.remove("pics/pic.jpg")
else:
os.rename("pics/"+old_file_name, new_file_name)
os.rename("pics/"+old_file_name, new_file_name)
#schedule.every(8).hours.do(upload)
schedule.every(0.2).minutes.do(upload)
while True:
schedule.run_pending()
time.sleep(1)
Traceback (most recent call last):
File "insta.py", line 34, in <module>
schedule.run_pending()
File "/usr/local/lib/python3.8/dist-packages/schedule/__init__.py", line 563, in run_pending
default_scheduler.run_pending()
File "/usr/local/lib/python3.8/dist-packages/schedule/__init__.py", line 94, in run_pending
self._run_job(job)
File "/usr/local/lib/python3.8/dist-packages/schedule/__init__.py", line 147, in _run_job
ret = job.run()
File "/usr/local/lib/python3.8/dist-packages/schedule/__init__.py", line 466, in run
ret = self.job_func()
File "insta.py", line 13, in upload
delren()
File "insta.py", line 27, in delren
os.rename("pics/"+old_file_name, new_file_name)
FileNotFoundError: [Errno 2] No such file or directory: 'pics/brunette_rage_mad.jpg' -> 'pics/pic.jpg'
2020-12-14 22:26:13,298 - INFO - Total requests: 41
解决方案
您尝试重命名文件两次。第二次它不会在那里。
def delren():
if os.path.exists("pics/pic.jpg"):
os.remove("pics/pic.jpg")
else:
# If pic.jpg doesn't exist then pics/<old_file_name> is moved to pics/pic.jpg
os.rename("pics/"+old_file_name, new_file_name)
# If you just renamed pics/<old_file_name> in the last line then it won't exist. Hence the error.
os.rename("pics/"+old_file_name, new_file_name)