私はこのようなことをしています:
import pathlib
p = pathlib.Path("temp/").mkdir(parents=True, exist_ok=True)
with p.open("temp."+fn, "w", encoding ="utf-8") as f:
f.write(result)
エラーメッセージ:AttributeError: 'NoneType'オブジェクトには属性 'open'がありません
明らかに、エラーメッセージに基づいて、mkdir
はNone
を返します。
Jean-Francois Fabreはこの修正を提案しました。
p = pathlib.Path("temp/")
p.mkdir(parents=True, exist_ok=True)
with p.open("temp."+fn, "w", encoding ="utf-8") as f:
...
これにより、新しいエラーメッセージがトリガーされました。
ファイル "/Users/user/anaconda/lib/python3.6/pathlib.py"、行1164、open opener = self._opener)
TypeError:整数が必要です(str型を取得しました)
pathlib モジュールは、組み込みの open 関数とはわずかに異なるシグネチャを持つopen
メソッドを提供します。
pathlib:
_Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)
_
ビルトイン:
_open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
_
このp = pathlib.Path("temp/")
の場合、パスp
が作成されているため、位置引数(キーワードを使用しない)でp.open("temp."+fn, "w", encoding ="utf-8")
を呼び出すと、最初がmode
であると想定されます。その後、buffering
、およびbuffering
は整数を予期しますが、これがエラーの本質です。整数が必要ですが、文字列_'w'
_を受け取りました。
この呼び出しp.open("temp."+fn, "w", encoding ="utf-8")
は、パスp
(ディレクトリ)を開こうとし、サポートされていないファイル名も提供しています。フルパスを作成してから、パスのopenメソッドを呼び出すか、フルパスをopen組み込み関数に渡す必要があります。
あなたが試すことができます:
p = pathlib.Path("temp/")
p.mkdir(parents=True, exist_ok=True)
fn = "test.txt" # I don't know what is your fn
filepath = p / fn
with filepath.open("w", encoding ="utf-8") as f:
f.write(result)
パスとして文字列を指定しないでください。メソッドfilepath
を持つのはオブジェクトopen
です。