datetime

実行した日の前日21時から72時間先までを1時間単位で出力というようなこをとよくやるのだが、いつも簡単に書けた試しがない。 from datetime import datetime from datetime import timedelta d = datetime.today() + timedelta(days=-1) t = datetime(d.yea…

Perlの何が面倒って strptime がない。

最近はできるだけPythonを使っているが、ちょこちょこしたものしか書かないから一向に上達しない。今日はPerlでプログラムを書く用事ができたので久しぶりに触る。 いつもながら不思議に思っているのは POSIXモジュールに strftime は入ってるが strptime が…

Web開発者に贈る昨今のPython事情

オープンソースカンファレンスの資料「Web開発者に贈る昨今のPython事情」 http://enbug.org/OSC2009TokyoFall.pdfわかりやすい。ありがとうございます。

Scientific Scripting with Python

iPhone の書籍。凝りずに Scientific Scripting with Pythonを AppStore から350円で購入。 フォントサイズと上下のスクロールが丁度いい感じで読み易い。内容も移動中に読むには丁度良い感じ。横画面が更に読みやすい。

Python Cheet Sheet

続いてPython Cheet Sheet を購入。価格は115円。Cheet Sheet なんかは iPhone に合うかと考えたが、移動中にCheet Sheetが必要なわけでもなくコーディングするデスクトップPCやノートPCでちょいと見れる環境があればいいことに気がつく。まあ、価格からすれ…

iPhoneでPythonの本を読む

オライリーの本も収納に場所をとるので iPhone で読んだらいいのではないかとAppStoreからPython Coocbook 第2版(洋書)を購入してみた。価格は600円。日本語版を書籍で買えば4000円以上するんだから、試しに買うには丁度いいのではないだろうか。 画面の狭さ…

曜日の取得

Pythonのdateオブジェクトでは、weekdayメソッドを使えば0から6が取得できて月曜からはじまり。isoweekdayメソッドでは1からで月曜はじまり。 PerlのDate::Calcなどの Day_of_Weekから得られる数字は 0が日曜日、1が月曜日で6までの値が取得できる。 RubyのD…

__name__

Python のコードに良く出てくる if __name__ == '__main__': なんとか... というコード。雰囲気だけ理解して、よく調べもせずに使っていたので調べた。 __name__ はライブラリとして import されるとその名前が入る。直接実行されると "__main__" が入るとい…

PIL

Pythonで画像処理をするときは PIL(Python Imaging Library)というのが使える。GD も ImageMagick も使えるが基本は PIL のように見える。 http://www.pythonware.com/products/pil/200×200ドット背景黒の画像に1本白線を引くだけのプログラムは import Imag…

文字列は変更不可

Pythonの文字列は変更不可である。 >>> s = 'abcdef' >>> print s abcdef >>> print s[0] a と部分文字列は参照できるが、代入しようとしても >>> s[0] = 'A' Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> s[0] = 'A' TypeError: 'str' object </module></pyshell#3>…

軽いのがタプル

タプルとリストの速度比較してみた。作って消すだけ。タプル版 import datetime t1 = datetime.datetime.now() for i in range(1000000): a = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) del a t2 = datetime.datetime.now() print t2 - t1 リスト版 import datetime …

バイナリデータを読む

ファイルに書かれた単精度実数(4バイトReal)を読む必要があったのでメモ。バイト並びはBig endian。structで処理すればいい。 import struct f = open('filename.bin', 'rb') dat = struct.unpack('>f', f.read(4)) print dat こんな感じ。struct の説明は↓…

シングルクォーテーションとダブルクォーテーションの使いわけ

Python は言語仕様上文字列は'...'(シングルクォーテーション)と"..."(ダブルクォーテーション)のどちらでもいいようだ。 Perl / Ruby / PHP は二つの文字列を区別しててダブルクォーテーションの場合、文字列内の特殊文字や変数などを置換して、シングルク…

書式付き文字列変換

他の言語だとsprintf関数あたりで実装してる書式付き文字列変換がPythonは言語自体に入ってる。 http://www.python.jp/doc/release/lib/typesseq-strings.html書式付き文字列 % 変数列が入ったタプルで変換可能。 >>> '%s %d %2.1f' % ('hello', 38.6, 45.32…

PEP

PEPって何? PEP8 はペップエイトと読めばいいのかな。何か聞いたことあるような言葉だと思っていたら梅田駅前のHEP FIVEが似てる。観覧車が刺さってるビル...というツマラナイ話はおいといて。 PEP = Python Enhancement Proposals ということらしい。「Pyt…

コーディングスタイルガイド

TAB と SPACE http://d.hatena.ne.jp/climpy/20090912/1252709716 にコメントを頂いた。ありがとうございます。PEP8 http://oldriver.org/python/pep-0008j.html という文書にコーディングスタイルガイドがあった。ここには「スペースとタブは混在させるんじ…

タプルとは?

RubyやPerlになかったタプル(Tuple)という概念がでてきた。これはリストとどう違うのだろう。 tup = (1, 2, 3, 4) というように定義して print tup[1] というように利用。これがリストだと、 lst = [1, 2, 3, 4] print lst[1] だ。ううむ定義の方法が違うが…

VimのPython向け設定

インデント方法には空白派かタブ派かがあるようだが私は空白派である。 更にいえば Vi派か Emacs派かと聞かれれば Emacs派であるが、諸事情でEmacsが動かない環境で簡単なプログラムを書く必要に迫られることもあって Vi(Vim)も良く使う。 そんな理由からVim…

TAB と SPACE

Python はインデントで制御ブロックを示すのでインデントは重要だ。リファレンスにもインデントのページがある。 http://www.python.jp/doc/release/ref/indentation.htmlここで重要なのは タブは (左から右の方向に) 1 つから 8 つのスペースで置き換えられ…

&& と || と !

論理和と論理積と否定。C だと || と && と ! を使う。 Perl / Ruby / PHP は、これも使えるし and or not も使える。結合順序は違ったりするので単純に置き換えできるものでもないようだが。Python の場合は and or not だけとなる。注意が必要。複数の手段…

switch case

慣れてるのが C だから、switch 文がどうなのかが気になる。Cで書いたらこんな感じ switch (変数) { case 値1: やること1; break; case 値2: やること2; break; default: やること; break; } Cのswitch文のフォールスルーは失敗だったと、どっかで読んだこと…

else if の書き方

演算子に続いて忘れるのが if文。ifが違うことはないが else if が微妙に違う。Cで書けばこうだ。 if (条件) { やること } else if (次の条件) { やること } else { やること } else if である。これは慣れてるのでわかりやすいと思ってる。C# も Java も同…

使える演算子

Pythonで使える演算子 + - * ** / // % << >> & | ^ ~ < > <= >= == != <> 複合演算子 += -= *= /= %= **= >>= <<= &= ^= |= アレヤコレヤの言語を触っていると基本的なところで悩む。「++ って使えた?」「+= って使えた?」などなど。Python は ++ はない…

バッファフラッシュ

あるファイルの更新状況を一時的に監視したかったので、以下のプログラムを書いてみた。 import time while 1: # ここでファイルの監視 print '結果の表示' time.sleep(60) シェルから % ./check.pyと実行したら問題はないものの、 % ./check.py > log.txt &…

chopはどうやる?

Pythonには文字列の最後の文字を切り落す Perl で言うところの chop がないようだ。ファイルから1行読むと行末の改行コードがついてくるので落したい。 line = line[:-1] という、文字列頭から終りのひとつ前までという表現で切りとればいいようだ。追記stri…

バージョンを調べる

python のバージョンを調べるには、-v としてはいけない。verboseモードで起動してウルサイ。--version でもない。 % python -V大文字の V である。

Python

Python の勉強をはじめたので、ここにメモ書きをはじめてみる。 私は Cは書けて Perl と Ruby がささやかに理解できる程度。