はじめに
こんにちは。
BizOptimars の大杉です。
本記事は、Python において外部ファイルから値を取得する方法を、備忘録として初心者目線で書いたものです。
自分への戒めとして、自分が陥ったうっかりエラーについても触れています。
設定ファイルは作れたけどエラーが...という方の助けにもなるかもしれません。
環境
Windows 11
Python 3.13.1
VSCode 使用
なぜ外部ファイル?
コードの中にパラメータの値をべた書きで書くと、コードの修正作業の手間が増えたり、セキュリティが甘くなったりと、色々な嬉しくないことが起こってしまいます。
これらを無くすためにも、設定ファイルとして別でファイルを設けて、その中にコード内のパラメータを書き、そこから値を取り出す形にするのが無難だと考えます。
実装方法
- 設定ファイルの形式を決める
- 設定ファイルに値を書き込む
- メインのファイルにて値を取得する
1. 設定ファイルの形式を決める
Python では設定ファイルとして様々な形式のファイルを利用できますが、今回は Python 形式(.py)を利用しました。
選んだ理由としては、設定ファイルの書き方が簡単なこと、メインファイルで値を取得するコードが簡単なこと です。
Python 形式を利用する場合、値を取得するコードを書くファイルと設定ファイルは同じディレクトリに置く必要があります。
もちろん要件によって形式の良し悪しはありますので、いろいろ調べてみてください。
参考
https://kodocode.net/python-begin-settings/
設定ファイルに値を書き込む
VSCode で設定ファイルを作成し、値を書き込んでいきます。
設定ファイルは settings.py という名前にしました。
name = "山田太郎"
age = 20
Python 形式での書き方は非常にシンプルで、
パラメータ名 = 値
と表記します。
3. メインのファイルにて値を取得する
設定ファイルと同じディレクトリにメインのファイルを作成し、下記のコードを実行します。
#設定ファイルをインポート
import settings
#値を取得し出力
print(settings.name)
print(settings.age)
結果
山田太郎
20
無事値を取得できました。
注意点
ここからは私が陥った超うっかりエラーの話ですので、値が取得できた方は読み飛ばしてください。
上記の流れに沿って私も実践していたのですが、どうしても以下のエラーが解決できませんでした。
Traceback (most recent call last):
File "rensyu.py", line 4, in <module>
print(settings.name)
^^^^^^^^^^^^^
AttributeError: module 'settings' has no attribute 'name'
これが解決できずかなりの時間調べていたのですが、原因は設定ファイルを保存していなかったことでした。
下画像でもわかる通り、通常 ✖ マークになっているところが○となっています。
おまけ
設定ファイルを利用する際は、暗号化するなどして、セキュリティ面にも気を配ってあげるとよい。
おわりに
こんなうっかりミスで時間を無駄にしてしまう人が1人でも減らせればと思い書きました。
保存は忘れずにしましょう...
参考