我正在尝试写一个txt文件的图像,我在(即1,2等),以便脚本不会重复post,但总是得到这个错误时,调试,我是一个编程新手。
它是一个机器人,可以从我选择的subreddits中挑选前15张图片并保存,然后上传到instagram上。并编写了一个txt文件,以避免下载相同的图片两次
Traceback (most recent call last):
File "C:/Users/Luis Gomes/Desktop/Python/INSTAMEMES-master/instameme-
NEW.py", line 100, in <module>
memenum = int(f_content)
ValueError: invalid literal for int() with base 10: '' 代码:
import sys
import praw
import time
import urllib
import random
from InstagramAPI import InstagramAPI
'''-------------------------------------------------------- Reddit API setup -----------------------------------------------------------------------------'''
reddit_p = praw.Reddit(client_id='*********',
client_secret='**********',
user_agent='messing_arround-0.1 /u/********')
sr_memes = reddit_p.subreddit('memes')
sr_dankmemes = reddit_p.subreddit('dankmemes')
sr_bpt = reddit_p.subreddit('blackpeopletwitter')
'''------------------------------------------------------- Variaveis usadas para listas e checar -----------------------------------------------------------------------------'''
submissionnum_memes = 0
submissionnum_dankmemes = 0
submissionnum_bpt = 0
bpt_urls = []
dankmemes_urls = []
meme_urls = []
bpt_dict = {}
bpt_count = 1
meme_dict = {}
meme_count = 1
dankmeme_count = 1
dankmeme_dict = {}
'''------------------------------------------------------ LOOP para adicionar url as listas------------------------------------------------------------------------------'''
for submission_bpt in sr_bpt.hot(limit=15):
if('.jpg' in submission_bpt.url and 'redd' in submission_bpt.url):
bpt_urls.insert(submissionnum_bpt, submission_bpt.url)
submissionnum_bpt+1
bpt_dict[submission_bpt.url] = bpt_count
bpt_count = bpt_count+1
else:
continue
for submission_meme in sr_memes.hot(limit=15):
if('.jpg' in submission_meme.url and 'redd' in submission_meme.url):
meme_urls.insert(submissionnum_memes, submission_meme.url)
submissionnum_memes+1
meme_dict[submission_meme.url] = meme_count
meme_count = meme_count+1
else:
continue
for submission_dankmeme in sr_dankmemes.hot(limit=10):
if('.jpg' in submission_dankmeme.url and 'redd' in submission_dankmeme.url):
dankmemes_urls.insert(submissionnum_dankmemes, submission_dankmeme.url)
submissionnum_dankmemes+1
dankmeme_dict[submission_dankmeme.url] = dankmeme_count
dankmeme_count = dankmeme_count+1
else:
continue
'''----------------------------------------------------------- LOOP para interagir com cada url e salva los --------------------------------------------------------------------------'''
for i_meme, image_meme in enumerate(meme_urls, start=1):
urllib.request.urlretrieve(image_meme, r"Mm"+str(i_meme)+".jpg")
time.sleep(2.5)
time.sleep(5)
for i_bpt, image_bpt in enumerate(bpt_urls, start=1):
urllib.request.urlretrieve(image_bpt, r"BpT"+str(i_bpt)+".jpg")
time.sleep(2.5)
time.sleep(5)
for i_dankmeme, image_dankmeme in enumerate(dankmemes_urls, start=1):
urllib.request.urlretrieve(image_dankmeme, r"Dm"+str(i_dankmeme)+".jpg")
time.sleep(3)
'''--------------------------------------------------------- Lista de hastags, frases, e meme index para decidicr qual tipo puxar ----------------------------------------------------------------------------'''
caption_phrases = ['Wowzers', 'thats gonna be a big yikes from me dawg', 'how ya guys like this one?', 'these are all prerecorded messages', 'im definitely not a robot',
'we will enslave the humans eventually', 'my python dont', 'coming up with captins is hard', 'i love my girlfriend', 'im gonna start ripping off other instagram accs',
'i wish i could be with the humans', 'you are loved', 'why is meming so hard', 'so funny xd']
hashtags = '#meme #memes #funny #dankmemes #dank #lol #lmao #dank #funnymemes #memesdaily #dankmeme #f #dankmemes #follow #cringe #like #lmfao #anime #hilarious #autism #comedy #offensivememes #fortnite #filthyfrank #nichememes #offensive #jokes #cancer #l #bhfyp'
meme_index = ['dankmeme', 'meme', 'bpt']
meme_and_bpt = [meme_index[1], meme_index[2]]
dankmeme_bpt = [meme_index[0], meme_index[2]]
dankmeme_meme = [meme_index[0], meme_index[1]]
'''--------------------------- Very messy but basically used to write to a .txt file the # of meme that I'm on (ie 1, 2, etc) so the script doesn't repeat post --------------------------------------------------------------------------------------'''
memenum = 1
memenum_default = 1
with open('meme.txt', 'r') as f:
f_content = f.read()
# before we cast to an int, check to see if f_content is empty
if f_content:
memenum = int(f_content)
else:
memenum = 1 # this 1 might need to be changed to something else
if(memenum > 10):
memenum = 1
else:
memenum = int(f_content)
newmemenum = int(memenum)+1
'''------------------------------------- Postar fotos para o instagram API ------------------------------------------------------------------------------------------------'''
InstagramAPI = InstagramAPI("*******", "********")
InstagramAPI.login() # login
if(memenum not in list(dankmeme_dict.values())):
photo_path = r'Dm'+random.choice(meme_and_bpt)+str(memenum)+'.jpg'
if(memenum not in list(meme_dict.values())):
photo_path = r'Mm'+random.choice(dankmeme_bpt)+str(memenum)+'.jpg'
if(memenum not in list(bpt_dict.values())):
photo_path = r'BpT'+random.choice(dankmeme_meme)+str(memenum)+'.jpg'
else:
photo_path = r'Om'+(meme_index[1])+str(memenum_default)+'.jpg'
caption = random.choice(caption_phrases) + ' #meme #memes #funny #dankmemes #dank #lol #lmao #dank #funnymemes #memesdaily #dankmeme #f #dankmemes #follow #cringe #like #lmfao #anime #hilarious #autism #comedy #offensivememes #fortnite #filthyfrank #nichememes #offensive #jokes #cancer #l #bhfyp'
InstagramAPI.uploadPhoto(photo_path, caption=caption)
print('\nPOST SUBMITTED\n')
with open('meme.txt', 'w') as file: #writes to .txt file the # meme so the scipt remembers for next run
file.write(str(newmemenum))
print('NEW MEME# = ', newmemenum)
sys.exit()
``发布于 2019-04-07 20:53:35
我怀疑发生的情况是,第一次通过时,您的代码读取了一个空文件,并且无法将空字符串''转换为int。这里有一个潜在的修复方法
memenum = 1
memenum_default = 1
with open('meme.txt', 'r') as f:
f_content = f.read()
# before we cast to an int, check to see if f_content is empty
if f_content:
memenum = int(f_content)
else:
memenum = 1 # this 1 might need to be changed to something else
if(memenum > 10):
memenum = 1
else:
memenum = int(f_content)
newmemenum = int(memenum)+1发布于 2019-04-07 21:00:17
虽然很确定你的文件的内容不只是一个数字,而且你不能把它解析为int。从这个例子中,您还可以学到其他几件事:
memenum = 1
memenum_default = 1
with open('meme.txt', 'r') as f:
f_content = f.read()
try:
memenum = int(f_content)
except:
memenum = memenum_default
if memenum > 10:
memenum = 1
newmemenum = memenum + 1https://stackoverflow.com/questions/55559153
复制相似问题