Pythonで日付の計算はdateutilを使う
Pythonで日付の計算をするのにはdatetimeやcalendarなどの標準モジュールがあるのですが、easy_install などでインストールできる dateutilモジュールが便利です。
が、使い方を忘れがちなので、よく使うものをまとめてみました。
非常に便利なのでPythonを使っている人はかならずインストールしておきましょう。
#! /usr/bin/env python
#! vim: fileencoding=utf8
import datetime
def test_relativedelta():
"""
集合知プログラミング 2章1
買って積み本になっていた集合知プログラミングを少しやってみたのでメモです。
サンプルコードはPythonで書かれていて、
http://examples.oreilly.com/9780596529321/PCI_Code.zip
からダウンロードできます。
今回やったのは以下の部分
るこさん用twitterクライアント「Rukotter」
そろそろ7ヶ月目になる我が家の「るこさん」ですが、どういう訳か非常にパソコンが好きです。
たまに触らせてあげてたのですが、vimをやらせてもあまり面白くないのでTwitterをやらせることにしました。
とは言っても0歳児に文字を入力して「Enterキー」を押すと送信されるということを伝えるのは無理なので、るこさん用のTwitterクライアント「Rukotter」をwxPythonで作りました。
http://bitbucket.org/ueblog/wxpythonapps/src/tip/rukotter/rukotter.py
python,wxpython,python-twitter,simplejsonがあれば動くと思います。
特徴は
1以上100未満の『2個の素数の積』である整数
Python Hack-a-thon#1 の参加フォームに
問題: 1以上100未満の『2個の素数の積』である整数を列挙しなさい (回答は任意です)
という問題があったのでやってみました。
Generatorだけを使っているので無駄にリストを作ってメモリを使いすぎないようにしています。limitを100000くらいにしても割と普通に動きます。
ただ、2回目のLoopで素数の計算を何度もやっているのが無駄、、、GeneratorはDeepcopyや、一つ前に戻すのが難しい、、、itertools.teeでも上手くかけませんでした orz...... 1以上100未満の『2個の素数の積』である整数
import math
from itertools import ifilter, count
RE:RE:*hogeとか**mapとか
RE:pythonの引数にある*hogeとか**mapとか - Djangoへの片思い日記 より
http://d.hatena.ne.jp/jYoshiori/20090310/1236685438
僕は
>>> import datetime
>>> import time
>>> datetime.datetime(*time.strptime(value, '%Y-%m-%d')[:3])
datetime.datetime(2008, 3, 10, 0, 0)
NKF_pythonで半角文字の変換
前回の続き、
ueBLOG | Pythonで機種依存文字を含む文字列を半角から全角へ
NFK_pythonにはguessという文字コードを判別してくれる関数があるのですが、
>>> b = "ナイトウあいう".decode("utf8").encode("sjis") #僕のipythonの内部コードがutf8のためutf8でdecode
>>> b
'ナイトウ\x82\xa0\x82\xa2\x82\xa4'
>>> print b
Pythonで機種依存文字を含む文字列を半角から全角へ
<追記 3/5>
hideakiさんのコメントとnullpobugさんの指摘どおり
Windowsでの文字コード変換 - 偏った言語信者の垂れ流し
cp932でオッケーでした。
>>> s = "コンゲツ えおⅡ"
>>> unicode(s, "cp932")
u'\uff7a\uff9d\uff79\uff9e\uff82 \u3048\u304a\u2161'
PythonをつかってMySQLの巨大な結果を返すselect文を処理する
PythonからMySQLを扱うには一般的にMySQLdbモジュールを使います。
(または、MySQLdbを内部で使っているSQLAlchemyなどのO/Rマッパー)
MySQLdbを普通に使うと以下のようになります。
>>> import MySQLdb
>>> con = MySQLdb.connect(db="intra", host="yourhost", user="your_username", passwd="your_passwd")
>>> cur = con.cursor(MySQLdb.cursors.DictCursor)
>>> cur.execute("select * from hoge_tbl limit 90000")
90000L
>>> cur.fetchone()
{'columns1': '4', 'maintdate': datetime.date(2002, 8, 13), 'hoge': 'hoge' }
Pythonのlogging
これまでPythonのモジュールでloggingモジュールをちゃんと使って無かったので練習。
(ちょっと問題ですね)
14.5 logging -- Python 用ロギング機能
- 特定のファイルにdebug以上のログを書き込み。プロジェクトごとにログファイルを作り、開始日時と終了日時も記録。
- 標準出力にも表示
- error以上はメールにエラーメッセージを送付
をするために試しに以下のコードを書いてみました。
Pythonでctypesを使ってUNLHA32.dllを扱う2
ちょっと前ですが、
ueBLOG | Pythonでctypesを使ってUNLHA32.dllを扱う
の続き。
実際の圧縮や解凍はどうするかという話ですが、
# 圧縮
>>> from ctypes import windll
>>> com = r"a c:\temp\archive.lzh C:\temp\*.csv"




