GeekTool只在python循环中迭代一次

GeekTool只在python循环中迭代一次,python,praw,geektool,Python,Praw,Geektool,我用PRAW构建了一个非常简单的脚本,在reddit.com/r/worldnews上打印了前10个链接标题。我想让它与GeekTool一起工作,但只显示以下内容: “REDDIT十大新闻” 1新闻标题 2“ 我不知道为什么会发生这种情况,因为直接从命令行运行脚本时,我没有任何问题 下面是python脚本: import praw def main(): subreddit = r.get_subreddit('worldnews') x = 1 print "TOP

我用PRAW构建了一个非常简单的脚本,在reddit.com/r/worldnews上打印了前10个链接标题。我想让它与GeekTool一起工作,但只显示以下内容:

“REDDIT十大新闻”

1新闻标题

2“

我不知道为什么会发生这种情况,因为直接从命令行运行脚本时,我没有任何问题

下面是python脚本:

import praw

def main():
    subreddit = r.get_subreddit('worldnews')
    x = 1
    print "TOP 10 NEWS ON REDDIT"
    print '' 
    for submission in subreddit.get_hot(limit=10):
        print x, submission.title
        x = x+1
        print ' '

if __name__ == "__main__":
    user_agent = "Top10 0.1 by /u/alexisfg"
    r = praw.Reddit(user_agent=user_agent)
    main()

如果在主函数周围放置try…except以打印任何异常,则会收到以下错误消息:

ascii codec can't encode character u'\u2019' in position 12: ordinal not in range(128)

这是一个编码问题——第二个标题中的某些字符不在ASCII范围内,python/Geektool将其用作默认编码。你可以通过使用
.encode('utf-8')

对标题字符串进行显式编码来解决这个问题,你是如何运行它的?通过GeekTool使用“python/Users/alex/Desktop/top10.py”…将
submission.title
更改为
submission.title.encode('utf-8')
@Jon,这很有效!谢谢为什么它要打印第一行呢?第一行是一条红鲱鱼,它会在任何至少有1个字符不能被ascii编解码器编码的行上失败。在这种情况下,第二行是初犯。我认为GeekTool对你隐瞒了错误。请参阅@Matt's try/了解诊断类似情况的方法。此外,请列举: