final=open("war.txt","w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
雖然打印dnsreg
我可以看到輸出,但是當我將它寫入文件時,沒有任何內容正在寫入。沒有語法錯誤。任何想法?數據沒有寫入文件[Python]
final=open("war.txt","w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
雖然打印dnsreg
我可以看到輸出,但是當我將它寫入文件時,沒有任何內容正在寫入。沒有語法錯誤。任何想法?數據沒有寫入文件[Python]
在使用必須設置和拆除的資源(如打開和關閉文件)時,您應該在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:
myFile = open("war.txt", "w+")
for line in madList:
line=line.split('A ')
dnsreg= line[1]
myFile.write(dnsreg)
finally:
myFile.close()
finally
將始終工作,因此您的文件被關閉,並且寫入更改。
寫入文件的數據不會立即寫入,而是保存在緩衝區中,並且每次寫入大量數據以節省寫入磁盤開銷。但是,在關閉文件時,所有緩衝的數據都會刷新到磁盤。 final.write()
後
final.close()
當你完成後,或final.flush()
如果你不想關閉文件: 所以,你可以做兩件事情。
感謝@馬特的Tanenbaum,一個非常好的方式蟒蛇來處理,這是做了with
塊內的文字:
with open("war.txt","w+") as final:
for line in madList:
line=line.split('A ')
dnsreg= line[1]
print dnsreg
final.write(dnsreg)
這樣做,你永遠不用擔心收文件!但是,如果程序提前終止,您可能需要刷新(例如由於例外)。
你正在關閉文件嗎? –
@Diego No Mate。我不是 。 – oldnoob
您應該 - 刷新緩衝區並提交寫入文件。 – dda