【Python】OSError: [Errno 22] Invalid argument: ‘ファイルパス’
OSError: [Errno 22] Invalid argument: 'ファイルパス'
Pythonにてファイルを開こうとするとこのようなエラーが出ることがあります。
このエラーが出る原因は大きく次の2つです。
- パスが間違っている(¥をエスケープしていない)
- ファイルが存在しない
特に1.が原因でエラーとなっている可能性が高いです。
確認すべきポイントを詳しく説明します。
1. パスが間違っている(¥をエスケープしていない)
エラー原因の1つはパスが間違っていることです。
特に注意して欲しいのはPythonの\の扱いです。
Pythonでは文字列の\は特殊文字を表すときに使用します。
そのため次のようなファイルパスを書いているとエラーになります。
"c:\temp\testfile.csv" # NG
\tはタブを表す特殊文字のため正しいファイルパスとなりません。
"c:\\temp\\testfile.csv" # OK (\をエスケープ)
r"c:\temp\testfile.csv" # OK (r文字列を使用)
\を特殊文字としないためにはエスケープを行います。具体的には\\と2つ繋げれば普通の「\」扱いとなります。
もう1つの方法は文字列の先頭にrを付けてr文字列とする方法です。
r文字列とすると特殊文字として判定されず\はそのまま「\」扱いとなります。
2. ファイルが存在しない
パスが間違いでなければそもそもファイルが存在しない可能性を疑ってみてください。
エクスプローラーやコマンドプロンプトにパスを貼り付けてファイルが開かなければ、そもそもファイルが存在しない(もしくはどこかの名称が違う)ということです。