🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3727閲覧

Pythonのエラーが消えない

person

総合スコア224

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/11/12 05:53

編集2019/11/12 06:14

#質問
Raspberry PiでPythonを動作させています。

IDLE(Python3)では問題なく実行できる(エラーなし)のですが、ターミナルで$ python3 /home/pi/デスクトップ/test.pyを実行するとエラーが出てしまいます。

自分が見た限りでは問題なく思えるのですが、どこが悪いのでしょうか?
分かる方、回答よろしくお願いします。

#エラー

terminal

1pi@raspberrypi001:~ $ python3 /home/pi/デスクトップ/test.py 2Traceback (most recent call last): 3 File "/home/pi/デスクトップ/test.py", line 6, in <module> 4 print(ini['test']['test']) 5 File "/usr/lib/python3.5/configparser.py", line 956, in __getitem__ 6 raise KeyError(key) 7KeyError: 'test' 8

#ソースコード

python

1#test.py 2 3import configparser 4 5ini = configparser.ConfigParser() 6ini.read('./config.ini', 'UTF-8') 7 8print(ini['test']['test'])

ini

1#config.ini 2 3[test] 4test = hoge

#追記
すみません、ソースファイルをコピペせずに手入力してたため、
ファイル名の指定でピリオドが抜けてましたが、
実際のソースコードではピリオドは抜けてません。
失礼しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

おそらくファイル名を間違えているだけです。
ini.read('./configini', 'UTF-8') ⇒ ini.read('./config.ini', 'UTF-8')

リファレンスを見る限り、open_file関数を使えばこのようなミスは未然に防げそうです。

Python

1with open('./config.ini') as fin: 2 ini.read_file(fin, 'UTF-8')

configparser --- 設定ファイルのパーサー — Python 3.8.0 ドキュメント

質問修正を受けて

実際のソースコードではピリオドは抜けてません。

まじですか。
コンフィグファイルと実行ファイルを同じディレクトリに置いているなら、次のように書けます。

Python

1import pathlib 2 3d = pathlib.Path(__file__).parent 4with (d / 'config.ini').open() as fin: 5 ...

投稿2019/11/12 05:59

編集2019/11/12 06:22
LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

プロンプトから判断する限りカレントディレクトリはホームディレクトリ(~)のようですが、この場合はconfig.iniもカレントディレクトリにないとエラーが出ます。仕様上、「ファイルがない」というエラーではなく、KeyErrorになるので注意してください。

これに限らず、基本的にファイルを開く際にはpythonファイルからの相対パスで拾ってくれたりはしないので注意が必要です。実行時カレントディレクトリが固定できないなら、絶対パスで指定しましょう。

投稿2019/11/12 06:02

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

person

2019/11/12 06:56

絶対パスで指定したらできました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問