Python - 仅最后一行被保存到文件
我想把我的脚本结果输出到一个文本文件里。脚本运行得很好,唯一的问题是,当结果保存到文本文件(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 个回答
-1
你有没有试过用参数'a'呢?
这样写:
f = open("output.txt", "a")
这行代码会把文件打开,并且光标会在文件的最后面。
想了解更多,可以看看这个链接:http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python
0
我猜这段代码是在一个循环里执行的。每次循环的时候,你都会写一行新的代码,但最后你只会得到最后那一行。
如果真是这样,那问题就出在这里:
f = open("output.txt", "w")
当你用 'w'
模式打开一个文件时,这会把文件里原有的内容清空。
要解决这个问题,你可以选择在循环外面打开文件一次,而不是每次循环都打开,或者用 'a'
模式、'r+'
模式,或者其他不会清空文件的模式。
关于 open
函数的不同模式的详细说明,可以查看 官方文档,或者在交互式解释器里查看帮助。
4
在每次循环中,你都在打开文件、清空内容、写入新内容,然后再关闭文件。其实只打开一次文件会更好:
f = open('output.txt', 'w')
# do loop
f.write(stuff)
f.close()
或者,甚至可以更好:
with open('output.txt', 'w') as f:
while loop:
f.write(stuff)
这种方法不仅更简洁,而且效率更高,因为你可以把文件的内容暂时存储起来,减少与操作系统的交互次数。
5
你需要写
f = open("output.txt", "a")
这样做会在文件末尾添加内容,而不是覆盖你之前放进去的东西。