数据未写入文件[Python]

2024-10-02 12:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

final=open("war.txt","w+")
for line in madList:
  line=line.split('A ')
  dnsreg= line[1]
  print dnsreg
  final.write(dnsreg)

在打印dnsreg时,我可以看到输出,但当我将其写入文件时,没有写入任何内容。也没有语法错误。有什么想法吗?在


Tags: 文件intxt内容forlineopenwrite
2条回答

写入文件的数据不会立即写入,而是保存在缓冲区中,一次写入的数据量很大,因此可以节省写入磁盘的开销。但是,在关闭一个文件时,所有缓冲的数据都会被刷新到磁盘上。在

所以,你可以做两件事:

  1. 完成后,请致电final.close(),或
  2. 如果不想关闭文件,请在final.write()之后调用final.flush()。在

多亏了@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)

这样做,你就不用担心关闭文件了!但您可能需要刷新,以防程序提前终止(例如,由于异常情况)。在

在使用必须设置和删除的资源(如打开和关闭文件)时,应该使用Python中的with语句。比如:

with open("war.txt","w+") as myFile:
    for line in madList:
        line=line.split('A ')
        dnsreg= line[1]
        myFile.write(dnsreg)

如果不想使用with,则必须手动关闭该文件。在这种情况下,您可以使用try...finally块来处理这个问题。在

^{pr2}$

finally将始终工作,因此您的文件将被关闭,并写入更改。在

相关问题 更多 >

    热门问题