2016-04-18 59 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/") 

好吧,當我使用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'? '圖像[random.randint(0,len(images)) - 1]'→'random.choice(images)'這將防止這種索引錯誤。 – falsetru

+0

感謝您的重播,所以我用'image_open = random.choice(images)'替換了'image_open = open(images [random.randint(0,len(images)) - 1])'',我得到這個錯誤:'追溯(最近一次調用最後): 文件「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

哦sh * t,它只是/ home/pi/Bots/Pictures /而不是/ home/Pi/Bots/Pictures。所以,感謝random.choice,祝你有個美好的一天! –