2024-10-02 12:26:57 发布
网友
final=open("war.txt","w+") for line in madList: line=line.split('A ') dnsreg= line[1] print dnsreg final.write(dnsreg)
在打印dnsreg时,我可以看到输出,但当我将其写入文件时,没有写入任何内容。也没有语法错误。有什么想法吗?在
dnsreg
写入文件的数据不会立即写入,而是保存在缓冲区中,一次写入的数据量很大,因此可以节省写入磁盘的开销。但是,在关闭一个文件时,所有缓冲的数据都会被刷新到磁盘上。在
所以,你可以做两件事:
final.close()
final.write()
final.flush()
多亏了@Matt Tanenbaum,在python中处理这个问题的一个非常好的方法是在with块中编写:
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块来处理这个问题。在
try...finally
finally将始终工作,因此您的文件将被关闭,并写入更改。在
finally
写入文件的数据不会立即写入,而是保存在缓冲区中,一次写入的数据量很大,因此可以节省写入磁盘的开销。但是,在关闭一个文件时,所有缓冲的数据都会被刷新到磁盘上。在
所以,你可以做两件事:
final.close()
,或final.write()
之后调用final.flush()
。在多亏了@Matt Tanenbaum,在python中处理这个问题的一个非常好的方法是在
with
块中编写:这样做,你就不用担心关闭文件了!但您可能需要刷新,以防程序提前终止(例如,由于异常情况)。在
在使用必须设置和删除的资源(如打开和关闭文件)时,应该使用Python中的
with
语句。比如:如果不想使用
^{pr2}$with
,则必须手动关闭该文件。在这种情况下,您可以使用try...finally
块来处理这个问题。在finally
将始终工作,因此您的文件将被关闭,并写入更改。在相关问题 更多 >
编程相关推荐