web-dev-qa-db-ja.com

「withopen()as file」メソッドを使用して、複数回書き込む方法は?

通常、ファイルを作成するには、次のようにします。

the_file = open("somefile.txt","wb")
the_file.write("telperion")

しかし、何らかの理由で、iPython(Jupyter)はファイルを書き込んでいません。それはかなり奇妙ですが、私がそれを機能させることができる唯一の方法は、私がそれをこのように書くかどうかです:

with open('somefile.txt', "wb") as the_file:
    the_file.write("durin's day\n")

with open('somefile.txt', "wb") as the_file:
    the_file.write("legolas\n")

しかし、明らかに、ファイルオブジェクトを再作成して再書き込みします。

最初のブロックのコードが機能しないのはなぜですか? 2番目のブロックを機能させるにはどうすればよいですか?

4
O.rka

wフラグは、「書き込み用に開いてファイルを切り捨てる」ことを意味します。 「追加するためにファイルを開く」ことを意味するaフラグを付けてファイルを開くことをお勧めします。

また、Python 2。を使用しているようです。プレーンテキストではなくバイナリを記述している場合を除いて、bフラグを使用しないでください。 content。Python 3では、コードでエラーが発生します。

したがって:

_with open('somefile.txt', 'a') as the_file:
    the_file.write("durin's day\n")

with open('somefile.txt', 'a') as the_file:
    the_file.write("legolas\n")
_

filehandle = open('file', 'w')を使用してファイルに表示されない入力については、ファイル出力がバッファリングされているためです。一度に書き込まれるチャンクは大きくなります。セルの最後でファイルが確実にフラッシュされるようにするには、最後のステートメントとしてfilehandle.flush()を使用できます。

8
Antti Haapala