web-dev-qa-db-ja.com

読み書き双方向の目的でファイルを開く方法は?

読み書き両方の目的でファイルを開く方法はありますか?

回避策として、書き込み用にファイルを開き、閉じてから、読み取り用にもう一度開きます。しかし、both読み書き用にファイルを開く方法はありますか?

161
bigredhat

ファイルを読み込んでから、ファイルを閉じて再度開くことなく書き込みます(既存のデータを上書きします)。

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()
230
Flimm

r+は同時に読み書きするための標準モードです。 fopen()/file()はこのオペレーティングシステムコールの小さなラッパーであるため、これはopen()システムコールの使用と変わりありません。

41
Andreas Jung

私はこのようなことを試してみました、そしてそれは予想通りに動きます:

f = open("c:\\log.log", 'r+b')
f.write("\x5F\x9D\x3E")
f.read(100)
f.close()

どこで:

f.read(size) - ファイルの内容を読み取るには、f.read(size)を呼び出します。これは、一定量のデータを読み取り、それを文字列として返します。

そして:

f.write(string)はstringの内容をファイルに書き込み、Noneを返します。

また、 ファイルの読み書きに関するPythonのチュートリアル を開くと、次のようになります。

'r +'はファイルを読み書き両方で開きます。

Windowsでは、モードに追加された 'b'はファイルをバイナリモードで開くので、 'rb'、 'wb'、 'r + b'のようなモードもあります。

19