したい:
- ファイルが存在する場合は、読み書きモードでファイルを開きます。
- 存在しない場合は作成します。
- いつでもどこでも切り捨てることができます。
EDIT :切り捨てを使用して、ある位置まで書き込み、ファイルの残りの部分が存在する場合は破棄することを意味します
このすべてをアトミックに(単一のopen()
呼び出しまたは単一の呼び出しをシミュレートしてopen()
)
単一のオープンモダリティが適用されるようには見えません:
- r : 明らかに機能しません。
- r+ : ファイルが存在しない場合は失敗します。
- w: ファイルが存在する場合は再作成します。
- w+: ファイルが存在する場合は再作成します。
- a: 読めません。
- a+: 切り捨てられません。
私が試したいくつかの組み合わせ (rw、rw+、r+w など) も機能しないようです。出来ますか?
Ruby からのいくつかのドキュメント(Python にも適用されます):
r
Read-only mode. The file pointer is placed at the beginning of the file.
This is the default mode.
r+
Read-write mode. The file pointer will be at the beginning of the file.
w
Write-only mode. Overwrites the file if the file exists. If the file
does not exist, creates a new file for writing.
w+
Read-write mode. Overwrites the existing file if the file exists. If the
file does not exist, creates a new file for reading and writing.
a
Write-only mode. The file pointer is at the end of the file if the file
exists. That is, the file is in the append mode. If the file does not exist,
it creates a new file for writing.
a+
Read and write mode. The file pointer is at the end of the file if the file
exists. The file opens in the append mode. If the file does not exist, it
creates a new file for reading and writing.