首页 > 解决方案 > 为什么我的 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

标签: pythonbotsinstagram

解决方案


您尝试重命名文件两次。第二次它不会在那里。

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)

推荐阅读