f=open('ファイル名','モード')
'w' モードはファイルを作成し、それを書き込み用に開きます (最終的に同じファイル オブジェクトを使用して読み取ることができません) 'r+' モードは読み取りと書き込みの両方のためにファイルを開きますが、ファイルがまだ存在しない場合は作成しません。代わりに新しいものを使用すると、エラーが返されます。
ここで、シナリオを考えてみましょう...ファイルを作成し、読み取りと書き込みの両方で開きたい..
ここにそれを行う1つの方法があり、それはうまくいきます...
f = open('filename', 'w')
f.close()
f = open('filename', 'r+')
私は別の別の方法を試しました..
>>> f1 = open('filename','w')
>>> f2 = open('filename', 'r')
>>> f1.write('test string')
11
>>> f2.read()
''
>>> f1.close()
>>> f2.read()
'test string'
ええ、期待どおりには機能しませんでした(パイプと同様)
私の質問は
関数はf2.read()
、ディスクから直接読み取ろうとしますか、それともファイルの既に利用可能なバッファ キャッシュから読み取ろうとしますか?
更新されたファイルはいつディスクに書き戻されますか? f1.close()
メモリ バッファからディスク内のファイルを更新することは明らかです。しかし、手動でディスクの書き込みを強制する方法はありますか?
したがって、次のように機能します
f1.write('test string')
#force disk write
f2.read('test string') #now it should read correct data