ホーム >
Python
- virtualenvwrapperを使用したPython開発環境の構築
- radiko・らじるらじるを聴く
- OpenOfficeのスプレッドシートを読む
- ニコニコ動画からflvファイルをダウンロードする
virtualenvwrapperを使用したPython開発環境の構築
virtualenvwrapperのインストール手順
virtualenvwrapper自体はpipを使ってグローバルな環境にインストールする。
sudo pip install virtualenvwrapper
次に、.bashrcなどのシェルの初期化スクリプトに以下の内容を追記する。
if which virtualenvwrapper.sh > /dev/null 2> /dev/null;
then
export WORKON_HOME=$HOME/.virtualenvs
source `which virtualenvwrapper.sh`
fi
virtualenvwrapperの使い方
利用可能な仮想環境の一覧の確認
workon
新しい仮想環境の作成
mkvirtualenv <新しい仮想環境の名前>
仮想環境で使用するPythonの実行ファイルのパスを指定する場合
mkvirtualenv <新しい仮想環境の名前> --python=/usr/local/bin/python
仮想環境の有効化
workon <仮想環境の名前>
プロンプトに現在の仮想環境の名前が表示されるので、どの仮想環境が有効になっているか、一目で確認できる
仮想環境の無効化
deactivate
仮想環境の削除
rmvirtualenv <仮想環境の名前>
radiko・らじるらじるを聴く
radikoの認証手続きにauthkey.pngというファイルが必要であり、このファイルを抽出するのにはswfextractというコマンドが必要。 swfextractはubuntuではswftoolsというパッケージに含まれている。
抽出したauthkey.pngをpython-netradio.pyと同じディレクトリにおいて、python-netradio.pyを実行すれば、radiko・らじるらじるを聴くことができる。
OpenOfficeのスプレッドシートを読む
OpenOfficeのドキュメントの中身はzipアーカイブなので、 Pythonのzipfileライブラリを使えば、それらのファイルの中身を読むことができる。 zipアーカイブは、content.xml・settings.xml・styles.xmlといったXMLファイル等で構成されており、 これらのXMLをパースすることで、OpenOfficeのドキュメントを読むことができる。
以下のサンプルプログラムでは、OpenOfficeのスプレッドシート(拡張子.ods)を読み込んで、 各セルの文字列を含むリストのリストを返す。
import zipfile
from xml.etree import ElementTree
def read_ods(filename):
def cells2generator(cells):
for cell in cells:
repeat = int(cell.attrib.get('{urn:oasis:names:tc:opendocument:xmlns:table:1.0}number-columns-repeated', 1))
p = cell.find('{urn:oasis:names:tc:opendocument:xmlns:text:1.0}p')
if p is not None:
text = p.text
for i in xrange(repeat):
yield text
else:
for i in xrange(repeat):
yield ''
def row2list(row):
return list(cells2generator(row.findall('{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-cell')))
with zipfile.ZipFile(filename, 'r') as ziparchive:
etree = ElementTree.fromstring(ziparchive.read('content.xml'))
body = etree.find('{urn:oasis:names:tc:opendocument:xmlns:office:1.0}body')
sheet = body.find('{urn:oasis:names:tc:opendocument:xmlns:office:1.0}spreadsheet')
table = sheet.findall('{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table')[0]
return [row2list(row)
for row
in table.findall('{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-row')[1:]]
if __name__ == '__main__':
import sys
print read_ods(sys.argv[1])
参考URL
ニコニコ動画からflvファイルをダウンロードする
import sys
import urllib
import urllib2
import urlparse
import cookielib
import shutil
from contextlib import nested, closing
def main():
if len(sys.argv) < 2:
print 'usage: python %s [video_id]' % __file__
sys.exit(0)
email = 'your email address here'
password = 'your password here'
video_id = sys.argv[1]
# urllib2でCookieを使うために、デフォルトのopenerを変更する
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
urllib2.install_opener(opener)
# ログインCookieを取得する
param = urllib.urlencode({'mail':email, 'password':password})
urllib2.urlopen("https://secure.nicovideo.jp/secure/login", param).close()
# FLVファイルのURLを取得する
with closing(urllib2.urlopen('http://www.nicovideo.jp/api/getflv?v=%s' % video_id)) as fin:
txt = fin.read()
flv_url = urlparse.parse_qs(txt)['url'][0]
# 動画ページのCookieを取得する
urllib2.urlopen('http://www.nicovideo.jp/watch/%s' % video_id).close()
# 動画をダウンロードする
flv_filename = '%s.flv' % video_id
with nested(closing(urllib2.urlopen(flv_url)), open(flv_filename, 'wb')) as (fin, fout):
shutil.copyfileobj(fin, fout)
if __name__ == '__main__':
main()
参考URL