月別アーカイブ: 3月 2008
店主申し込み受付不具合について
申し込みフォームが上手く機能しない場合があるようで、お申し込み手続きでご不便をかけた方に、担当として申し訳なく思っています。すいません。
申し込みフォームの不具合について
http://d.hatena.ne.jp/shinobazukun/20080308/1204999411
メールでも申し込みは受け付けております。申し込みフォームが使えない場合はメールでお申し込みください。
urllib2でプロキシを参照しないようにする
urllib.urlopenはステータス404でも例外を発生してくれない。
urllib2.urlopenは404で例外を発生してくれるけれど、そのままだと環境変数のプロキシ設定を参照するようで、ちょっと困る場合があった。
というわけで、urllib2.urlopenでプロキシを設定|参照しないようにする方法を調べてみた。
#!/usr/bin/env python """Python urllib2 proxy usage sample """ import urllib2 #今回はプロキシ設定を空にしておく #proxies = {'http': 'http://www.example.com:3128/'} proxies = {} #プロキシハンドラーを作成して handler = urllib2.ProxyHandler(proxies) #プロキシハンドラーを指定してURL Openerを作成して opener = urllib2.build_opener(handler) #作成したURL Openerをインストールしてから urllib2.install_opener(opener) #普通にurlopenすると例外が発生してくれる try: u = urllib2.urlopen('http://www.example.com/404NotFound.html') print u.read() except IOError,error: print error
Pythonカテゴリ作ってみた。
Pythonで月末、月初。ついでに月を加減するadd_months
月初はまあいいとしても、月末、月の足し引きは、こんな方法しか思いつかず。
カッコ悪いが使えることは使える、と思う。
2008.3.14追記
- calendarモジュールを使って月の日数を取得することで、月末計算をシンプルに。
- add_monthsも見直し。
それほどカッコ悪くはなくなったんじゃないかと思う。修正の経緯
#!/usr/bin/env python # -*- coding: utf-8 -*- """月末、月初のdatetime.dateオブジェクトを返す。 Oracleのadd_months互換の月加減。 """ import datetime from calendar import monthrange def first_day(date): """月初を返す""" return datetime.date(date.year, date.month, 1) def is_last_day(date): """月末日付ならTrueを返す""" return days_of_month(date.year, date.month) == date.day def days_of_month(year,month): """年,月の日数を返す""" return monthrange(year, month)[1] def last_day(date): """月末を返す""" return datetime.date(year=date.year, month=date.month, day=days_of_month(date.year, date.month)) def add_months(date,months): """月を加減する。 dateにはdatetime.dateクラスのオブジェクト monthsには整数で月数を指定する。 月末をOracleのadd_months互換の方法で処理する。 例えば、 2007年2月28日(月末)に1ヶ月足すと3月31日(月末)。 2008年2月29日(月末)に1ヶ月足すと2008年3月31日(月末)。 2008年2月28日(月末ではない)に1ヶ月足すと2008年3月28日(同じ日)。 """ if months==0: return date year, month = divmod(date.month + months, 12) year = year + date.year #ちょうど割り切れたら12月で、マイナス1年。 if month == 0: month = 12 year = year - 1 #入力日付がその月の月末なら、加算後月の日数を。 #そうじゃなければ入力日付の日。 day = date.day if date.day > days_of_month(year, month): day = days_of_month(year, month) return datetime.date(year=year, month=month, day=day)
最新版はGist:227554をどうぞ。