PyYAMLモジュールを使ってPythonからYAMLを読む



最初easy_installでPyYAMLをインストールしようとしたが、libyamlがないというエラーになりインストールできなかったため、上記サイトからtar.gzをダウンロード・展開して

sudo python setup.py install

でインストール。(Pythonのバージョンに注意)


読み込みたいYAMLファイル: account.yaml

email:      mailaddress
password:   password
group:      progdhoge.tumblr.com


terminalで

$ python
>>> import yaml
>>> str = open('account.yaml').read()
>>> yaml.load(str)
{'password': 'password', 'group': 'progdhoge.tumblr.com', 'email': 'mailaddress'}

yaml.load()の引数にstr型を渡すと、dict型が返ってくる。


さっきのエントリ(PythonでTumblrに画像を投稿するテスト - progd)のスクリプトはコード中にメールアドレス・パスワードを書いていたので、アカウント情報をYAMLファイルで設定できるようにした。


tumblr.py

#! /usr/bin/env python
# coding: utf-8

import urllib
import yaml

TUMBLR_URL = 'http://www.tumblr.com/api/write'

def postImg(url, caption='', link=''):
	pd = yaml.load(open('account.yaml').read().decode('utf-8'))

	pd['type'] = 'photo'

	pd['source'] = url
	pd['caption'] = caption
	pd['click-through-url'] = link

	params = urllib.urlencode(pd)
	up = urllib.urlopen(TUMBLR_URL, params)
	print up.read()