Python学習【365日チャレンジ!】120日目のマスターU(@Udemy11)です。
夜はカエルの鳴き声がうるさくてなかなか寝付けない状態になっているのですが、多分都会の人は想像できないと思います。
ほんと絵本の世界に出てくるようなカエルの大合唱が繰り返されます。
たまに、はかったのように静かになるときがあるのですが、少し経つとこれまた、はかったかのように鳴き声を合わせて大合唱が再開するんです。
ほんとこればっかりは体験してもらわないと信じてもらえませんので、都会にお住まいの方は、ぜひこの時期に田んぼがたくさんある田舎へ旅行してみてください。
それでは今日のPython学習にはいりましょう!
昨日の復習
昨日は、configparser
モジュールのConfigParser()
メソッドを使い、設定ファイルであるconfig.ini
を作成したり、読み込んだりしました。
指定された設定ファイルを読み込んで活用するれば、他のシステムなどと連携することができるようになります。
詳しい内容は、昨日の記事をごらんください。
今日は、ini
ファイルと同じ設定ファイルであるyaml
ファイルを学習します。
yamlとは
yaml
はYAML Ain’t Markup Language
の略で、直訳すると“YAMLはマークアップ言語ではない”なんて意味のわからないことになってしまいますが、フォーマットされたデータ構造を持ったテキストファイルです。
用途としては、ini
ファイル同様に、各種の設定ファイルやログファイルなどに使われています。
例:
login_info:
user: jarvis
password: jiko9uuk
db_server:
host: 127.0.0.1
port: 3306
configparser
の場合は、セクションをブラケットの角括弧[]
でくくっていましたが、yaml
の場合は、:(コロン)
で改行して、インデントを半角スペース2つ下げて【key】と【値】を記述します。
yamlファイルの作成
ファイルの作成は、open
関数を使って、引数のdefault_flow_style
をFalse
に指定して値を書き込みます。
import yaml
with open('config.yml', 'w') as yaml_file:
yaml.dump({
'login_info': {
'user': 'jarvis',
'password': 'jiko9uuk'
},
'db_server': {
'host': '127.0.0.1',
'port': 3306
}
}, yaml_file, default_flow_style=False)
このファイルを実行すれば、同じ階層にconfig.yml
ファイルができて、中身は例の形にフォーマットされます。
引数default_flow_style
を指定しなければ、config.yml
の中身は次のようになります。
login_info: {user: jarvis, password: jiko9uuk}
db_server: {host: 127.0.0.1, port: 3306}
コードの5行目から13行目までに記述されているデータがそのまま書き込まれています
ただ、Pycharmで【CSV Plugin】がインストールされている場合に、引数を指定せずに作成しても、config.yml
ファイルを開くと、下記のようにフォーマットされて表示されます。
Pythonistaだと書いた順番に表示されましたが、Pycharmの場合は、順番が逆になっていました。
yamlファイルの読み込み
yaml
ファイルの読み込みは、config.ini
と同じようにopen
関数を使いますが、read
関数の代わりにsafe_load
関数を使用します。
import yaml
with open('config.yml', 'r') as yaml_file:
data = yaml.safe_load(yaml_file)
print(data['login_info']['user'])
print(data['login_info']['password'])
print(data['db_server']['host'])
print(data['db_server']['port'])
出力結果
jarvis
jiko9uuk
127.0.0.1
3306
読み込みはload()
関数でも大丈夫なのですが、安全じゃないですよ〜という警告がでてしまいます。
安全性を考慮して、読み込みにはsafe_load
の使用が推奨されています。
やってると楽しい
プログラミングでおもしろいのは、思ったとおり動いて、思ったような出力ができることです。
よ〜し、これで完成!
と思って、コードを実行すると、エラーが起こってがっくりすることが多いのが現状です。
ただ、そのエラーがどこで起こっているのか、何が原因だったのかを突き止めて、修正してきちんと動いたときの快感が最高なんですよね。
まだまだ複雑な動作をさせることはできませんが、ひととおり基本的なことをマスターしたら、どんどんコードを書いて、いろいろなプログラムを作りたいと意気込んでいます。
ほんと楽しいのが一番です。
それでは明日もGood Python!