final=open("war.txt","w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
打印dnsreg时我可以看到输出,但是当我将其写入文件时,没有写入任何内容。也没有语法错误。任何的想法?
final=open("war.txt","w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
打印dnsreg时我可以看到输出,但是当我将其写入文件时,没有写入任何内容。也没有语法错误。任何的想法?
写入文件的数据不会立即写入,而是保存在缓冲区中,并且一次写入大量数据,因此可以节省写入磁盘的开销。但是,在关闭文件时,所有缓冲的数据都会刷新到磁盘。
所以,你可以做两件事:
final.close(),或final.flush()稍后调用。final.write()感谢@Matt Tanenbaum,在 python 中处理这个问题的一个非常好的方法是在一个with块内进行写入:
with open("war.txt","w+") as final:
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
这样做,您将永远不必担心关闭文件!但是如果程序过早终止(例如由于异常),您可能需要刷新。
with当使用必须设置和拆除的资源时,您应该在 Python 中使用该语句,例如打开和关闭文件。就像是:
with open("war.txt","w+") as myFile:
for line in madList:
line=line.split('A ')
dnsreg= line[1]
myFile.write(dnsreg)
如果您不想使用with,则必须手动关闭该文件。在这种情况下,您可以使用try...finally块来处理此问题。
try:
myFile = open("war.txt", "w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
myFile.write(dnsreg)
finally:
myFile.close()
finally将始终有效,因此您的文件已关闭,并写入更改。