Python

EC2上にPython実行環境を作った話

大したことはしてない。 パッケージ更新とpip sudo yum -y update sudo easy_install pip virtualenvとvirtualenvwrapper あとはまあイアン先生の言うとおりに。 http://www.ianlewis.org/jp/virtualenv-pip-fabric sudo pip install virtualenv sudo pip in…

CentOS 5.5にvirtualenvを入れて、Python2.7とFlaskの環境を作ったよ!

Flaskでも試そうと思ったけど、CentOS 5.5のPythonは2.4.3だったりして寂しい感じだったのでいろいろ環境整備からして、ようやく環境作り終わった。 [root@shrkw-rad]# python -V Python 2.4.3 Python2.7のインストール EPELのyumに2.6系のPythonがあるけど…

BeautifulSoup 3.1.0.1を入れようとしたらImportError

setup.pyを叩いたら ImportError: Bad magic number ですってよ、奥さん。 とりあえずは3.0.7aでじゅうぶんだったのでこっち入れた。

SHA-256ハッシュの生のダイジェストをbase64でエンコードする

表題の通り。 In [1]: import hashlib In [8]: import base64 In [13]: base64.b64encode(hashlib.sha256(text).digest()) Out[13]: '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' archivaのパスワードを手で入れるために使ったけど、やっぱりPythonは便…

lxmlでshift_jisのwebページをパース

HTMLParserがエンコーディングを受け取るのでそこで教えてあげます。 http://codespeak.net/lxml/api/lxml.etree.HTMLParser-class.html In [71]: sjis_url = 'http://www.owabi119.com/bunrei.html' In [72]: sjis_src = urllib.urlopen(sjis_url).read() I…

lxmlでutf-8のマルチバイト文字を扱う on IPython on Windows

lxmlは2.1.1で。 気軽なパースはBeautifulSoupで十分だけど、アホみたいな19世紀に書かれたようなwebページのパースをするのに、XPathがないと死ぬと思ったので、lxmlを試してみた。UTF-8が宣言されたはてなのトップページをWindows上のIPythonでxpathる。 I…

パスワード風文字列生成器のGUI

IPythonで書きなぐったプロトタイプ #!/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * f = Frame() f.pack() e = Entry(f) e.pack() b = Button(f) b.pack() b.config(text=u"生成") f.master.title(u"ランダム文字列生成") # generate…

IPythonのログをプッシュし続けるサーバを書いてみた

会社でIPythonのセミナーをやったので、1時間でやっつけてみたスクリプト。 ものすごい恥ずかしいけど、誰も褒めてくれなかったから、ここに書いておく。ネタとしてはけっこう面白いと思ったんだけどなあ。SocketServerの使い方は、指定されたページまたはフ…

Tkinterを利用したモジュールをpy2exeでexe化するときはbundle_filesは3じゃないとダメ

Tkinterを利用したモジュールをpy2exeでexe化したら、実行時に 問題が発生したため、example.exe を終了します。 ご不便をおかけして申し訳ありません。 という、エラーが。 Pythonスレのキャッシュに74番の同様のエラーの解消方法の書き込みがあって助かっ…

文字のインクリメント

Perlだとmagical inclementという名前です。 Python In [39]: chr(ord('A') + 1) Out[39]: 'B' Perl $ perl -e '$alp = 'a';for (1 .. 52) {print $alp++}';echo abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaz Java publ…

今日のテキトーBeautifulSoup

久しぶりにBeautifulSoupのドキュメントみたけど、 bs.find('div', 'class_name') ってやると、属性の値も条件に含められるのね。知らなかった!あと、http://www.crummy.com/software/BeautifulSoup/documentation.html#arg-attrsで、属性をみれると書いて…

Python Challenge をいまさら

むかーしに見たことがあるような気がするけど、そのときは一問も解いてなかったのでやってみた。 Level 0 0秒。 インタラクティブシェルでホゲっと。 Level 1 30分。 a = '' for i in d: a += chr(ord(i) + 2) という風に、バカチョンに2を足していったらア…

Pythonチュートリアル 読了

やっぱドキュメントもけっこう読んでないなあ。知らない機能があったので面白く読めた。オンラインでも読めるけど、手元に置いておいてリファレンスにしたい本。Pythonチュートリアル作者: Guido van Rossum,鴨澤眞夫出版社/メーカー: オライリー・ジャパン…

encode, decodeのおさらい

>>> u'あ' u'\u3042' >>> print u'あ' あ >>> u'あ'.encode('utf-8') '\xe3\x81\x82' >>> print u'あ'.encode('utf-8') あ >>> 'あ'.decode('utf-8') u'\u3042' >>> u'\u3042' u'\u3042' >>> print u'\u3042' あ >>> print u'\xe3\x81\x82' ã >>> print '\xe…

Python温泉 #2行ってきた

Python温泉からこっち、トラブル続きで今頃エントリ。忙し過ぎてフィードを読んだりする暇すらない。詳細は後で書くけど、Buildbotが面白いなあと。Twistedはちょこちょこ試したけど、まだ消化できてない。

optparseでオプションをパースの練習

6.21 optparse -- より強力なコマンドラインオプション解析器 いろいろ考えないで済むので助かりますね。 #!/usr/bin/env python if __name__ == '__main__': import optparse parser = optparse.OptionParser(usage="%prog foo bar", version="%prog 1.0") …

日付の表現形式の変換

timeモジュールよりdatetimeモジュールのほうがよりオブジェクティブに扱えるけど、形式の変換を単純にやろうとする場合はこんな感じか。 time.strftime('%Y-%m-%d', time.strptime('Jun 2007', '%b %Y')) と書くと 2007-06-01と返ってくる。 6.10 datetime …

Makoでshift_jisの文字列をバインディング

shift_jisで書かれたcsvを読んでバインディングしていくときは、こんな感じ。 def create_by_mako(csv_file, tmpl_file): import mako.template tmpl = mako.template.Template(filename=tmpl_file, output_encoding='shift_jis', default_filters=['decode.…

Django勉強会

3分で埋まるとか。早すぎ。 サイボウズラボ行きたかったのに。

続・BeautifulSoupのスクレイピングの練習

import BeautifulSoup import urllib 真偽, 空欄, Noneしか返さない [i.get('href') and i.get('href').endswith('jpg') for i in soup.findAll('a')] Noneも返っちゃう [i.get('href') if i.get('href') and i.get('href').endswith('jpg') else None for i…

Makoでshift_jisのテンプレートを使って、shift_jisで出力する

welcome to Mako! 多機能だけど重くない感じ?バランス崩れてないというか。 テンプレートファイルをディレクトリ指定で探してくれるのがいい感じだし、制御構文のところが変な空行になったりしないのも素敵。 あと、名前がいい。アオザメのことなのね。 入…

csvモジュールとtemplateモジュールで定型的なファイルを出力

def create_poor_doc(csv_file, tmpl_file): import csv reader = csv.reader(open(csv_file, 'rb')) import string f = open(tmpl_file , 'r') msg = string.Template(f.read()) f.close() for row in reader: f = open(row[0] + '.html', 'w') f.write(msg…

日常のなかのBeautifulSoup

http://news4vip.livedoor.biz/archives/51033213.html URLCollectorで抽出してみたけどなんかうまくできなかったので、設定をみるよりBeautifulSoup使ったほうが速い気がしたのでIPythonで。 In [1]: import BeautifulSoup In [2]: import urllib In [3]: s…

末尾に連番が付いているファイルを連番を無視した名称でディレクトリに振り分けるスクリプト

a01.jpg a02.jpg a03.jpg b01.jpg b02.jpg というファイルがあるときに a b というディレクトリを作成して振り分けるスクリプト。 os, sys, shutilの練習。 #!/usr/bin/env python import os import sys import shutil def get_fn_set(target_dir_name): fil…

文字コードを指定してファイルを読んで、取得した文字列でリネーム

4.9 codecs -- codec レジストリと基底クラス shift_jisで書いてあるファイルを読んで、ファイルの内容をそのままファイル名に使う。 shift_jisの文字列をバイトのまま扱うので、Windowsのファイルシステムでそのまま使える。 In [35]: import codecs In [36…

ファイル名を日本語にリネーム

6.26 shutil -- 高レベルなファイル操作 IPython on Windowsでの話なので、別の環境ならまた別の話。IPythonじゃなくて、pythonを起動しただけでも話がかわる。あー、Macだったら、NFCとかNFDで悶絶しそうな気がする。Windows環境でIPythonを起動させるとデ…

BeautifulSoupによるスクレイピングの練習

練習 その1 aタグのhref属性の列挙 import urllib import BeautifulSoup soup = BeautifulSoup.BeautifulSoup(urllib.urlopen('url')) for _a in soup.findAll('a'): _a.get('href') 練習 その2 aタグであり href属性にhtmlという文字列が含まれており 子要…

Pythonでベーシック認証

urllib2-exampleのまんま。 import urllib2 auth_handler = urllib2.HTTPBasicAuthHandler() auth_handler.add_password('realm', 'host', 'user', 'passwd') res = urllib2.build_opener(auth_handler).open('uri') res.read()

Djangoの開発用サーバをlocalhost以外で起動する

久しぶりにDjangoを触って忘れてたので、メモ。 python manage.py runserver xxx.xxx.xxx.xxx:8000で起動すれば、 http://xxx.xxx.xxx.xxx:8000/でアクセスできる。

Python Workshop行けなかった

疲労感で起き上がれず。 このまえのTGワークショップのときもそうだったし、俺はPythonのイベントには近づけない体なのか。