1. ホーム
  2. python

Pythonで「strオブジェクトに'close'属性がない」エラーを解決する。

2022-02-21 20:44:04

以下のようにプロジェクト内のコードを実行します。

f = open(filename).read()
...

f.close()

報告書  str' オブジェクトには 'close' という属性がありません。 エラーが発生しました。

fはファイルの内容を格納する文字列変数で、ファイルに依存しない。

正しいファイルオブジェクトはopen(filename)を指すはずです。

つまり、ファイルオブジェクトがスコープを抜けた後(この場合、.read()の直後)、ファイルオブジェクトは閉じられます。open(filename).read()はファイルの内容を含む文字列で、fはファイルオブジェクトが閉じられた後です。

だから、上のコードはこう読むべきだ。

f = open(filename)
file_content = f.read()
...

f.close()

この時点ではエラーは報告されません。