Python

2chのトリップを生成する

2ちゃんねるのトリップをPythonで生成するにはどうしたらいいだろう? Perl版のコードならwikipediaにある。 トリップ (電子掲示板) - Wikipedia そのまま変換するとこうなるか。 import re from crypt import crypt from string import maketrans tripkey …

WindowsでCGIスクリプトを書くと何かが変だ

結論から言うと、以下のような症状が出る場合について。 cgi.FieldStorageを使うと固まる cgi.FieldStorageのformdataからデータの一部しか取得できない ソースコードに以下を追加すると直るかもしれません。 try: import msvcrt except ImportError: pass e…

translate

文字を置換するときはどうすればいいか? \ を / に置き換えるくらいなら translate メソッドが使えそうなのだが、これがまた直感的に使いにくい。ドキュメントにはこう書いてある。 translate( table[, deletechars]) 文字列をコピーし、オプション引数の文…

Python 2.5.1

Python 2.5.1 が出ました。2.5のバグフィックスだそうで。 http://www.python.org/download/releases/2.5.1/Windowsへのインストール時に前のバージョン(2.5)のアンインストールが必要なのか疑問に思う。落としてきた Installer Package を開いてみると、…

あまり見かけない例外

以下のコードを windows の python 2.5 で実行すると、 def foo(): try: print 2 break finally: print 3 print 4 if __name__ == '__main__': print 1 foo() print 5 こうなる。 1 2 3 Traceback (most recent call last): File "C:\test.py", line 11, in …

文字コードの判定

pythonで文字コードを判定するには普通kconvとかpykfとかchardetを使う。何かの本(たしか「みんなのPython」だったと思う)を以前立ち読みをしてたら文字コードを判定するのに、適当なエンコーディングでUnicodeに変換してみてUnicodeErrorが発生しないかど…

Lib/site.py

コメントでocean-cityタンに教えてもらった Lib/site.py を見ていたところ、class Quitter(object) という定義が setquit() の中にあるじゃないか(たぶん227行目)。 class Quitter(object): しかも __call__内で思いっきり標準入力を閉じている。 sys.stdin.…

quitとexitについてどうでもいいこと

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> try: ... quit() ... except SystemExit: ... pass ... >>> sys.stdin.…

例外をunicodeで

ソースコードをUTF-8で書いていると、pythonのスタックトレース(stack trace)画面がおかしい。環境は Windows 2000、Python 2.5。 # -*- coding: utf-8 -*- raise IndexError, 'いきなりエラー' というコードを実行すると、 Traceback (most recent call l…

xyzzyのpy-modeで、CPUを100%にする方法

まずxyzzyを起動してpy-modeにする。次に、以下のように入力する。 # xyzzy 100% if True: pass それからifステートメントを削除する。 # xyzzy 100% pass 最後に、pのすぐ左にカーソルを持っていき、BackSpaceキーを押す。再現するかな。

文字コード判定

文字コードの変換はpythonのバージョンが2.3以降ならできる。 >>> unicode('何か', 'shift_jis').encode('euc-jp') '\xb2\xbf\xa4\xab' 判定はどうすればいいか。pykfかchardetが使えそう。 pykf ダウンロード先が見つからない。 Internet Archiveからダウン…

windowsでos.unlinkは読み取り専用が指定されているとうまく動作しない。 解除するにはどうしたらいいか。 OSError: [Errno 13] Permission denied それらしい機能が標準ライブラリに見つからないのでPython for Windows Extensionsを利用する。 import win3…

globals()は現在いる場所のオブジェクト一覧を返す。>>> globals() {'__builtins__': , '__name__': '__main__', '__doc__': None}s = 'abc' c = globals()[s + 'd'] c() みたいにできる。

"abc".capitalize() 最初の文字だけを大文字にする。"あ".capitalize() では何も起こらなかった。u"b".capitalize() はちゃんと変換される。print u"b".capitalize() はちゃんと全角のBになった。