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
に出力を確認できますが、ファイルに書き込むと何も書き込まれません。構文エラーもありません。何か案が?
ファイルに書き込まれたデータはすぐに書き込まれるのではなく、バッファーに保持され、一度に大量のデータが書き込まれるため、ディスクへの書き込みのオーバーヘッドが節約されます。ただし、ファイルを閉じると、バッファリングされたすべてのデータがディスクにフラッシュされます。
したがって、次の 2 つのことを行うことができます。
final.close()
するか、final.flush()
afterを呼び出します。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
常に機能するため、ファイルが閉じられ、変更が書き込まれます。