2016-04-18 5 views
1

私は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から始まります。

ありがとう!

+0

なぜ 'random.choice'を使用しないのですか?この種のインデックスミスを防ぐ 'images [random.randint(0、len(images)) - 1]'→ 'random.choice(images)' – falsetru

+0

私は '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:リストインデックスが範囲外です。 ' –

+0

'images'を印刷するとどうなりますか?それは空ですか? – falsetru

答えて

1

imagesが空でないことを確認してください。

ところで、それはrandom.choice(インデックスを自分で計算する必要、読みやすい)を使用しない方が良いでしょう:

image_open = open(random.choice(images)) 

random.choiceシーケンスが空の場合もIndexErrorが発生します。

+0

ありがとう、なぜシーケンスは空ですか? –

+0

Oh sh * t、それはちょうど/ home/pi/Bots/Pictures /で、/ home/Pi/Bots/Picturesではなかった。だからrandom.choiceのおかげで、良い一日の仲間を持っている! –

関連する問題