私はTwythonを使って、フォルダからランダムな画像を投稿するボットを作っています。ここにコードがあります!Twythonでランダムな写真を使用して
from twython import Twython
import glob
import random
app_key = "XXX"
app_secret = "XXX"
oauth_token = "XXX"
oauth_token_secret = "XXX"
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
def RandomImageTwitt(folder):
#Takes the folder where your images are as input
images = glob.glob(folder + "*")
image_open = open(images[random.randint(0,len(images))-1])
#Tweeting
image_ids = twitter.upload_media(media=image_open)
twitter.update_status(status='hello this is a status', media_ids=image_ids['media_id'])
RandomImageTwitt("/home/Pi/Bots/Pictures/")
[OK]を、私はPythonのscript.pyを使用する場合、それはこのエラーを返す:
Traceback (most recent call last):
File "script.py", line 20, in <module>
RandomImageTwitt("/home/Pi/Bots/Pictures/")
File "script.py", line 14, in RandomImageTwitt
image_open = open(images[random.randint(0,len(images))-1])
IndexError: list index out of range
それが助けることができる場合、私は、Pythonで初心者だが、私のすべてのファイルは、このように格納されます。 1.jpg、2.jpg、3.jpg ...すべてのファイルはjpgで、リストは1から始まります。
ありがとう!
なぜ 'random.choice'を使用しないのですか?この種のインデックスミスを防ぐ 'images [random.randint(0、len(images)) - 1]'→ 'random.choice(images)' – falsetru
私は 'image_open = open(images [random.randint(0、len(images)) - 1])'を 'image_open = random.choice(images)'に置き換えました。 'Traceback(直近の最後のコール): ファイル" ewhring.py "、行20、 RandomImageTwitt("/home/Pi/Bots/Pictures/") ファイル" ewhring。 py "、14行目、RandomImageTwitt image_open = random.choice(images) ファイル「/usr/lib/python2.7/random.py」275行目を選択 return seq [int(self.random() * len(seq))]#seqが空の場合に#IndexErrorを発生します。 IndexError:リストインデックスが範囲外です。 ' –
'images'を印刷するとどうなりますか?それは空ですか? – falsetru