Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在.txt中保存多行文本_Python 2.7 - Fatal编程技术网

Python 2.7 在.txt中保存多行文本

Python 2.7 在.txt中保存多行文本,python-2.7,Python 2.7,我是python新手。我可以打印twitter搜索结果,但当我保存到.txt时,我只得到一个结果。如何将所有结果添加到.txt文件中 t = Twython(app_key=api_key, app_secret=api_secret, oauth_token=acces_token, oauth_token_secret=ak_secret) tweets = [] MAX_ATTEMPTS =

我是python新手。我可以打印twitter搜索结果,但当我保存到.txt时,我只得到一个结果。如何将所有结果添加到.txt文件中

t = Twython(app_key=api_key, app_secret=api_secret, oauth_token=acces_token, oauth_token_secret=ak_secret)

tweets                          =   []
MAX_ATTEMPTS                    =   10
COUNT_OF_TWEETS_TO_BE_FETCHED   =   500

for i in range(0,MAX_ATTEMPTS):

    if(COUNT_OF_TWEETS_TO_BE_FETCHED < len(tweets)):
    break

    if(0 == i):
    results = t.search(q="@twitter",count='100')

    else:
    results = t.search(q="@twitter",include_entities='true',max_id=next_max_id)


    for result in results['statuses']:
    tweet_text = result['user']['screen_name'], result['user']['followers_count'],     result['text'], result['created_at'], result['source']
    tweets.append(tweet_text)
    print tweet_text

    text_file = open("Output.txt", "w")
    text_file.write("@%s,%s,%s,%s,%s" % (result['user']['screen_name'], result['user']['followers_count'], result['text'], result['created_at'], result['source']))
    text_file.close()
t=Twython(app\u key=api\u key,app\u secret=api\u secret,oauth\u token=acces\u token,oauth\u token\u secret=ak\u secret)
tweets=[]
最大尝试次数=10次
要获取的推文数量=500
对于范围内的i(0,最大尝试次数):
如果(要获取的TWEETS的计数
在执行循环之前,只需重新排列代码即可打开文件:

t = Twython(app_key=api_key, app_secret=api_secret, oauth_token=acces_token, oauth_token_secret=ak_secret)

tweets                          =   []
MAX_ATTEMPTS                    =   10
COUNT_OF_TWEETS_TO_BE_FETCHED   =   500

with open("Output.txt", "w") as text_file:
    for i in range(0,MAX_ATTEMPTS):

        if(COUNT_OF_TWEETS_TO_BE_FETCHED < len(tweets)):
        break

        if(0 == i):
        results = t.search(q="@twitter",count='100')

        else:
        results = t.search(q="@twitter",include_entities='true',max_id=next_max_id)


        for result in results['statuses']:
        tweet_text = result['user']['screen_name'], result['user']['followers_count'],     result['text'], result['created_at'], result['source']
        tweets.append(tweet_text)
        print tweet_text

        text_file.write("@%s,%s,%s,%s,%s" % (result['user']['screen_name'], result['user']['followers_count'], result['text'], result['created_at'], result['source']))
        text_file.write('\n') 
t=Twython(app\u key=api\u key,app\u secret=api\u secret,oauth\u token=acces\u token,oauth\u token\u secret=ak\u secret)
tweets=[]
最大尝试次数=10次
要获取的推文数量=500
打开(“Output.txt”、“w”)作为文本文件:
对于范围内的i(0,最大尝试次数):
如果(要获取的TWEETS的计数
我在这里使用Python的with语句打开上下文管理器。当您退出循环时,上下文管理器将处理关闭文件的问题。我还添加了另一个write命令,用于写出回车符,以便每行数据都位于自己的行上


您还可以在追加模式下打开文件(“a”而不是“w”),这将允许您删除第二个写入命令。

有两种解决方案。哪一个最好可能取决于你计划的更多细节

最简单的解决方案就是在程序顶部(循环之前)打开一次文件,然后在后面的代码中反复使用同一个文件对象。只有当整个循环完成时,才应该关闭文件

with open("Output.txt", "w") as text_file:
    for i in range(0,MAX_ATTEMPTS):
        # ...

        for result in results['statuses']:
            # ...

            text_file.write("@%s,%s,%s,%s,%s" % (result['user']['screen_name'],
                                                 result['user']['followers_count'],
                                                 result['text'],
                                                 result['created_at'],
                                                 result['source']))
另一种解决方案是多次打开该文件,但在这样做时使用
“a”
追加模式。追加模式不会像写入模式那样截断文件,它会自动搜索到结尾,因此不会覆盖文件的现有内容。如果您正在写入多个不同的文件,这种方法将是最合适的。如果你只是写信给那个人,我会坚持第一个解决方案

for i in range(0,MAX_ATTEMPTS):
    # ...

    for result in results['statuses']:
        # ...

        with open("Output.txt", "a") as text_file:
            text_file.write("@%s,%s,%s,%s,%s" % (result['user']['screen_name'],
                                                 result['user']['followers_count'],
                                                 result['text'],
                                                 result['created_at'],
                                                 result['source']))

最后一点:看起来您正在写出逗号分隔的数据。您可能希望使用该模块,而不是手动写入文件。它可以为您处理诸如引用或转义数据中出现的任何逗号之类的事情。

(使用“a”参数打开(),例如text_file=open(“Output.txt”,“a”)您可以修复代码的缩进吗?它可以根据缩进的方式执行不同的操作。