Python 初心者です。時々起きてしまうエラーで毎回はまるため、対処を残しておく。
- 実行環境
- ディレクトリ構造
- サンプルコード(FileNotFoundError)
- サンプルコード(FileNotFoundError)実行結果
- FileNotFoundError が出た時に確認すること
- サンプルコード(修正版)
- サンプルコード(修正版)実行結果
実行環境
ディレクトリ構造
sample-project └─sample │ sample.py (実行するスクリプト) │ └─data └─txt hoge.txt (参照するファイル)
サンプルコード(FileNotFoundError)
sample.py(FileNotFoundError)
# hoge.txt を読み込んで、テキストの本文を表示するサンプルコード # hoge.txt の場所を相対パスで設定 source = 'data/txt/hoge.txt' # hoge.txt を読み込む f = open(source, 'r', encoding='utf-8') data = f.read() f.close() # hoge.txt の本文を表示 print(data)
サンプルコード(FileNotFoundError)実行結果
FileNotFoundError: [Errno 2] No such file or directory: 'data/txt/hoge.txt'
FileNotFoundError が出た時に確認すること
1.パスを誤記していないか確認する
いわゆるケアレミスしていないか。 ※元ネタを知らないと伝わらない。ケアレミス。。
2.1 が OK の場合、実行時のカレントディレクトリを取得&確認する
sample.py(カレントディレクトリ取得版)
# hoge.txt を読み込んで、テキストの本文を表示するサンプルコード # カレントディレクトリを取得・表示する import os print(os.getcwd()) # hoge.txt の場所を相対パスで設定 source = 'data/txt/hoge.txt' # hoge.txt を読み込む f = open(source, 'r', encoding='utf-8') data = f.read() f.close() # hoge.txt の本文を表示 print(data)
sample.py(カレントディレクトリ取得版)実行結果
赤のアンダーラインが実行時のカレントディレクトリ。ここを起点とした相対パスを設定する必要がある。
サンプルコード(修正版)
相対パスを正しい値に修正。('data/txt/hoge.txt' → 'sample/data/txt/hoge.txt')
sample.py(修正版)
# hoge.txt を読み込んで、テキストの本文を表示するサンプルコード # hoge.txt の場所を相対パスで設定 source = 'sample/data/txt/hoge.txt' # hoge.txt を読み込む f = open(source, 'r', encoding='utf-8') data = f.read() f.close() # hoge.txt の本文を表示 print(data)
サンプルコード(修正版)実行結果
hoge.txt の本文が正常に表示された。
Hello hoge!