hagio.org - 日記

Powered by PENS


Index

2009: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2010: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2011: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2012: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2013: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2014: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2015: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2016: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2017: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)

今月のアルバム [ 投稿 | 編集 ]


編集

December 2013

Dec 26 (Thu)

20:34

ソケット関連の挙動を確認するときなんかに Python の対話モードは便利で、 例えば、listen() はするけど accept() が遅れた場合のソケットの見え方とか、 accept() されていない状態で相手側で send() した場合の動きとか、 いろんな状況を事前のプログラムなしにその場で作り出せるので、重宝している。

ただ、試行を繰り返していると、起動ごとの import socket だの socket.socket() だのが煩わしく、 何とかならないものかと思っていたが、便利なオプションがあることに気づいた。

$ man python ... -i When a script is passed as first argument or the -c option is used, enter interactive mode after executing the script or the command. It does not read the $PYTHONSTARTUP file. This can be useful to inspect global variables or a stack trace when a script raises an exception.

わお、これは有用だ。つまりは以下で対話的 listen ソケットを用意できるということだ。

$ cat listen.py import socket s = socket.socket() s.bind(('',55555)) s.listen(1) $ python -i listen.py >>> s <socket._socketobject object at 0xb7f2fefc>

Dec 24 (Tue)

22:15

久しぶりに Python のおべんきょ。 commands が時代遅れらしいので、 subprocess で代替関数を作っておく。エラー処理は必要に応じて。

$ ./run.py 'cat hoge' exit code = 1 stdout = stderr = cat: hoge: そのようなファイルやディレクトリはありません $ ./run.py 'cat run.py' exit code = 0 stdout = #!/usr/bin/env python import sys def run(cmdline): import subprocess import shlex cmd = shlex.split(cmdline) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) exit = p.wait() out, err = p.communicate() return exit, out, err ret, out, err = run(sys.argv[1]) print 'exit code =', ret print 'stdout =', out print 'stderr =', err stderr =

21:58

1 ヶ月近く何も書いてなかったので、ちゃんと動作するかテスト。

追記:おぉ、ちゃんと飛ばしてリンク張るように書いてたか…。

11 月(2) へ


↑戻る