文件读取是否可以通过列表切片与列表理解相结合?

时间:2017-09-06 09:52:13

标签: python twitter list-comprehension twython

以下代码片段是使用Twython的twitter机器人的核心。 我想知道我是否可以将读取的文件合并到列表中 因为看起来相当复杂,只能在一个项目列表中读取一行 从中创建另一个多项目列表。

我已经检查过并找到了一些使用中读取整个文件的示例 例如readlines(),但也不涉及切片。

with open(tweet_datafile,'r') as smstweets:
    bigtweet = smstweets.readline().strip() 
    text_entire = [ bigtweet[i:i+140] for i in range(0,len(bigtweet),140) ]

for line in range(len(text_entire)):
    twitter.update_status(status=text_entire[line])

注意:

Python 2.7,Linux。安装了Python 3.5&如果需要可用。

使用了readline()。strip()因为我希望能够用行读取文件 任意长度并删除任何EOL和空格(列表的最后一项) 可能最终只能作为空格; twitter会拒绝空间的状态更新,而我 还没有为此写任何错误处理)。

我只读取输入文件的第一行,然后在代码中将文件写回 减去那条线。我认为这是我最有限技能的最简单的解决方案,因为机器人不会全天候运行

我不是程序员,我使用示例代码I的碎片一起攻击了这个 发现躺在Stack Overflow和其他地方。我想用的很简单 代码并不依赖于Twython之外的第三方库。生成器和迭代器 对我来说似乎是巫术。

1 个答案:

答案 0 :(得分:0)

好吧,也许只是一个小改动 - 没有必要将列表分配给变量也不必迭代索引,列表可以直接迭代:

with open(tweet_datafile,'r') as smstweets:
    bigtweet = smstweets.readline().strip() 
for line in ( bigtweet[i:i+140] for i in range(0,len(bigtweet),140) ):
    twitter.update_status(status=line)