質問編集履歴

2 iniファイルセクション名修正

person

person score 91

2020/07/01 22:24  投稿

Python3 iniファイルの例外処理
iniファイルの内容を取得するときに例外処理を書きますが、configparserにあるNoSectionErrorなどで処理したときにエラーメッセージを表示することは可能ですか?
(except Exception as e としたときの print(e) みたいな感じで、どのセクション・オプション指定で例外が発生したか)
ソースコード
```Python
import configparser
import os
import sys
ini = configparser.ConfigParser()
ini.read(os.path.dirname(sys.argv[0]) + "/" + "test.ini")
try:
   a = ini.get("setting", "a")
   b = ini.get("setting", "b")
   c = ini.get("setting", "c")
   print(a, b, c)
# この方法だと、例外の発生部分がわからない(?)
# ファイルが見つからないまたはセクションがない
except configparser.NoSectionError:
   print("NoSectionError")
# オプション(パラメータ)がない
except configparser.NoOptionError:
   print("NoOptionError")
"""
# この方法だと print(e) から例外の発生部分が分かる
# No option 'a' in section: 'setting'
# のような感じで
# 全ての種類の例外を拾って表示
except Exception as e:
   print(e)
"""
```
```ini
[settinga]
[setting]
a = aaa
b = bbb
c = ccc
```
  • Python 3.x

    16381 questions

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

1 iniファイルの追加

person

person score 91

2020/07/01 22:24  投稿

Python3 iniファイルの例外処理
iniファイルの内容を取得するときに例外処理を書きますが、configparserにあるNoSectionErrorなどで処理したときにエラーメッセージを表示することは可能ですか?
(except Exception as e としたときの print(e) みたいな感じで、どのセクション・オプション指定で例外が発生したか)
ソースコード
```Python
import configparser
import os
import sys
ini = configparser.ConfigParser()
ini.read(os.path.dirname(sys.argv[0]) + "/" + "test.ini")
try:
   a = ini.get("setting", "a")
   b = ini.get("setting", "b")
   c = ini.get("setting", "c")
   print(a, b, c)
# この方法だと、例外の発生部分がわからない(?)
# ファイルが見つからないまたはセクションがない
except configparser.NoSectionError:
   print("NoSectionError")
# オプション(パラメータ)がない
except configparser.NoOptionError:
   print("NoOptionError")
"""
# この方法だと print(e) から例外の発生部分が分かる
# No option 'a' in section: 'setting'
# のような感じで
# 全ての種類の例外を拾って表示
except Exception as e:
   print(e)
"""
```  
 
```ini  
[settinga]  
a = aaa  
b = bbb  
c = ccc  
```
  • Python 3.x

    16381 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る