Python - 只将最后一行保存到文件中

时间:2014-08-04 09:06:00

标签: python python-2.7

我正在尝试将脚本的结果输出到文本文件中。脚本工作正常,唯一的问题是当结果保存到文本文件(output.txt)时,只保存最后一行,而不是整个事情?我不确定我在这里做错了什么。任何建议将不胜感激。

振作!

        try:

            if 'notavailable' not in requests.get('url' + str(service) + '&username=' + str(username), headers={'X-Requested-With': 'XMLHttpRequest'}).text:
                result = service + '\t' + " > " + username + " > " 'Available'
                print  result
                f = open("output.txt", "w")              
                f.write(result + "\n")
                f.close()

            else:
                print service + '\t' + " > " + username + " > " 'Not Available'

        except Exception as e:
            print e

4 个答案:

答案 0 :(得分:3)

在每次迭代中,您都要打开文件,删除其内容,编写和关闭。最好只打开一次:

f = open('output.txt', 'w')
# do loop
    f.write(stuff)
f.close()

或者更好:

with open('output.txt', 'w') as f:
    while loop:
       f.write(stuff)

此方法不仅更干净,而且性能更好,因为您可以缓存文件的内容,并使用最少数量的OS调用。

答案 1 :(得分:2)

你需要写

f = open("output.txt", "a")

这将附加文件,而不是写入你放入其中的任何内容。

答案 2 :(得分:0)

我会猜测并假设所有这些代码都在循环中发生。每次循环,你再写一行,但最后,你只有最后一行。

如果这是问题,那就是问题:

        f = open("output.txt", "w")              

'w'模式打开文件时,会截断任何现有文件。

要解决此问题,请在循环外打开文件一次,而不是一遍又一遍,或者以'a'模式或'r+'模式或其他不截断的模式打开文件文件。

open函数的文档或交互式解释器中的内联帮助解释了所有不同模式的含义。

答案 3 :(得分:0)

你试过参数'a'吗? 所以: f = open(“output.txt”,“a”)

那将在末尾用指针打开文件。 http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python