ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

python

Pythonでgrep風にディレクトリ内のファイルを検索

大した機能ではないが、せっかくスクリプトを作ったので保存しておく。 せめて検索フォルダと検索文字列はコマンドオプションとして 渡せるようにしておくべきだったか。 pygrep.py import os import re search_dir = "<検索対象フォルダパス>" search_pat…

CentOSにJPEGサポート付きでPIL(Python Imaging Library)をインストールする

思いのほか苦労したのでメモ。 CentOSにPython2.5とPIL1.1.6の環境を作成してプログラムを動かしてみたところ、 JPEG画像の処理に失敗し、下記のログが表示された。 decoder jpeg not available なんやかんやで下記のライブラリが必要だと分かったのでインス…

Pymacsを使ってPythonでEmacs拡張

NTEmacsを使い始めたので、Pymacsを入れて簡単なプラグインを作ってみた。 EmacsはVimと比べるとまだまだ不満がいっぱいだが、色々プラグインを 作ってVimの快適さに近づけていきたい。 苦労したのでメモ。 Pymacsのインストール Python2.5環境で試した。 あ…

UnicodeDecodeErrorが発生する文字をignoreオプションで無視する

Pythonで文字コードを変更する際に変換対象の文字列に変換不能な文字が 含まれているとUnicodeDecodeErrorが発生して困ることが多かった。 しかし、unicode関数やencode関数のignoreオプションを使うと、 それらの変換不能な文字列を無視して変換してくれる…

Pythonで1行メモVimスクリプト

先日に引き続きPythonでVimに挑戦。 コマンドラインで書き込んだメモをファイルに蓄積していくVimプラグインを書いてみた。 画面に表示している内容とまったく関係ないふとした思いつきを書き込む。 :PyMemoAdd メモ のような感じで使う。 pymemo.vim if has…

BeautifulSoupで特定の属性値を持つタグを取得する

下記のようなXMLから rel="next" なタグの href 属性を取得する場合 <feed version="0.3" xml:lang="ja"> <title>Pirosukeのブックマーク</title> <link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/piro_suke/" /> </link></feed>

PythonでVim用のファイルブックマークプラグインを作る

初めてのVimスクリプトをPythonで書いたが、 ほとんどVimの機能を呼び出しているだけになってしまった... しかし楽しい。 環境は gVim7 + WinXP + Python2.5 + BeautifulSoup。 :PyBookmarkAdd でカレントバッファのファイルをブックマーク。 :PyBookmarkLis…

PythonでVim拡張

同じモノを作り続けると飽きるので、気分転換にVimscriptを書き始めた。 自分のエディタが拡張できるのはかなり楽しい。 ひとまず登録、変更、削除、一覧表示ができるようにファイルブックマークプラグインでも作る。 ん、これはVimscriptを書いているのでは…

SQLObjectで昔作ったデータベースのデータを取り出してCSVファイルに落とす

データベースを移行する作業があったので、PythonのORマッパ、SQLObjectを使ってみた。 ついでにCSVファイルに出力する標準モジュールも使ってみる。 mysqlのコマンドだけでできる作業のような気がしないでもない...。 まあ、pythonでデータを操作できるし嬉…

Pythonで辞書を要素とする配列を特定のキーでソート

探したけど見つからなかった。 初めてのlambda。 ranking_list = [] ranking_list.append({"uriage": 30, "shiire": 5, "zairyo": 20 }) ranking_list.append({"uriage": 20, "shiire": 10, "zairyo": 10 }) ranking_list.append({"uriage": 10, "shiire": 1…

Pythonで数値に3桁毎にカンマを入れる

あちこち探して、結局下のエントリと同じdecimalパッケージの マニュアルにサンプルとして掲載されているのを発見。 ここのmoneyfmt関数。 http://www.m-takagi.org/docs/python/lib/decimal-recipes.html print moneyfmt(Decimal("2000"), 0, dp="") # 2,00…

Pythonで10進数計算したり数値を丸めたりする

指定した桁で切り捨てたり四捨五入したり、 2進数だと丸め誤差が生じる計算を正しく行うための標準ライブラリ。 from decimal import * x = Decimal("2.467") y = Decimal("3.512") # 小数点以下を切捨て print Decimal(x).quantize(Decimal('1.'), rounding…

PythonでReportLabでPDF出力

どうやらPythonのPDF生成はReportLabがスタンダードっぽいので使う。 Unicodeでの縦書きが難しかったのでDjangoで表示する方法メモ。 views.py ... from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from r…