在循环内连续调用函数并打印不同的结果

时间:2018-05-28 10:47:30

标签: python python-3.x twitter tweepy credentials

我正在创建一个小程序,可以引用某个艺术家的引用,然后将随机的随机音频发布到Twitter上。到目前为止,我已经设法拉出歌词,从一首随机歌曲中获取随机行,但它总是发布相同的歌词。我理解为什么会发生这种情况,因为它不仅仅是在早期循环使用相同的输出。你能告诉我如何循环播放一首新歌然后每次循环播放一首新的随机歌词吗?我试图在循环中调用'lyricsimport'函数无济于事

我对Python很陌生,请在必要时反馈任何改进 - 提前谢谢

到目前为止,这是我的代码......

# Import Twitter credentials from credentials.py
import random
from tswift import Artist
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

#get lyrics from tswift and save to text file
def lyricsimport():
    tswift = Artist('Frank Ocean')
    song = random.choice(tswift.songs)
    savefile = open('ocean.txt', 'w')
    savefile.write(song.format())
    savefile.close()


# Open text file ocean.txt (or your chosen file) for reading and select random lyric
with open('ocean.txt') as f:
    my_file = f.readlines()
    file_lines = random.choice(my_file)

# Tweet a line every 10 seconds (will change post-testing)
def tweet():
    # Create a for loop to iterate over file_lines
    for line in file_lines:
        try:
            print(file_lines)
            #if statement to ensure that blank lines are skipped
            if line != '\n':
                api.update_status(file_lines)
                sleep(10)
            else:
                pass
        except tweepy.TweepError as e:
            print(e.reason)
            sleep(2)
tweet()

1 个答案:

答案 0 :(得分:1)

my_file是文件中的所有行,对吧? 所以file_linesrandom.choice的{​​{1}},而random.choice只返回一个值...这应该是可见的 print(file_lines) - 应该只是一行。

你如何替换

    api.update_status(file_lines)

在你的循环中

    api.update_status(random.choice(my_file))

文件打开应如下所示:

with open('ocean.txt') as f:
    my_file = f.readlines()

让我们看看是否有帮助:)