IO.UnsupportedOperation: Python での書き込み不可エラー
Python は、ファイルからのデータの読み取りと書き込みにおいて非常に効率的です。 ファイル処理に役立つさまざまな機能があります。
ファイル処理の基本には、open()
関数を使用してファイルを開き、ファイル モードに基づいてデータを読み書きすることが含まれます。
open()
は、指定されたファイルを開き、ファイルの読み取りおよび書き込み操作を実行するために使用できるファイル オブジェクトを作成します。
ファイルは、さまざまなタイプのモードで開くことができます。 デフォルトでは、ファイルを読み取りモードで開きます。
このチュートリアルでは、Python の io.UnsupportedOperation: not writable
エラーとその修正方法について説明します。
Python の io.UnsupportedOperation: not writable
エラーを修正
このエラーは、読み取りモードで開かれたファイルに対して write
操作を実行しようとすると発生します。 読み取りモードで開いたファイルは、内容を読み取ることしかできません。
例えば:
with open("sample.txt", "r") as f:
f.write("Text")
出力:
io.UnsupportedOperation: not writable
上記の例では、ファイルを r
モード (読み取り) で開き、write()
関数を使用してこのファイルにデータを書き込もうとしたため、エラーが発生したことに注意してください。
これを解決するには、この操作をサポートするモードでファイルを開くことを忘れないでください。 書き込み (w
) または追加 (a
) モードは、ファイルにデータを書き込むために使用されます。
w
モードでファイルを開くと、以前の内容は切り捨てられます。 a
モードはファイルの末尾にコンテンツを追加し、以前のデータを保持します。
例えば:
with open("sample.txt", "w") as f:
f.write("Text")
上記の例では、エラーを正常に回避し、ファイルにデータを書き込むことができます。
ファイルからのデータの読み取りと書き込みを同時に行いたい場合は、r+b
モードを使用できます。 ファイルがこのモードで開かれている場合、バイナリモードで読み取りおよび書き込み操作を実行できます。
例えば:
with open("sample.txt", "r+b") as f:
f.write(bytes("Text", "utf-8"))
ファイルはバイナリモードで開かれるため、データをバイトとして書き込むことに注意してください。 上記の例では、テキストは utf-8
エンコーディングでバイトとしてエンコードされます。
または、writable()
関数を使用して、ファイル ハンドルを使用して書き込み操作を実行できるかどうかを確認することもできます。 True
または False
を返します。
以下のコードを参照してください。
with open("sample.txt", "r") as f:
print(f.writable())
with open("sample.txt", "a") as f:
print(f.writable())
出力:
False
True
上記の例は、ファイルが r
モードで開かれると writable
関数が False
を返し、ファイルが a
モードで開かれると True
を返すことを示しています。
まとめ
最後に、io.UnsupportedOperation: not writable
エラーの背後にある原因とその修正方法について説明しました。 間違ったモードでファイルを開くとこれがどのように発生するか、および書き込み操作をサポートするファイル モードについて説明しました。
また、ファイルオブジェクトが書き込み操作を実行できるかどうかを確認するために使用できる writable
関数の使用方法も示しました。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません