1. ホーム
  2. python

[解決済み] with open() as file "メソッドで、複数回書き込むには?重複

2022-03-14 04:40:20

質問

通常、ファイルを書き込むには、次のようにします。

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番目のブロックが動作するようになるのでしょうか?

解決方法は?

その w フラグは、quot;書き込み用に開き、ファイルを切り捨てる" を意味します。 a フラグは、quot;追記用にファイルを開くという意味です。

また、Python2を使っているようですね。を使うべきではありません。 b ただし、プレーンテキストではなくバイナリを記述する場合を除きます。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() を最後のステートメントとして使用します。