新山が Python を使っていくうえで作りためた
簡単なコマンドやライブラリをまとめています (の、予定)。
Python 関連文書も興味があればご覧ください。
なお、ここで公開しているファイル/文書は特に断りがある場合を除きすべて public domain (一部 MIT/X ライセンス) とします。 新山祐介はこれらのプログラムについていかなる責任も負いません。
clitrans.py
sortbydate.py
vnc2flv
Pyntch
tenjiwp.py
PDFMiner
homesync.py
des.py
Shaling
Fooling
flv2mp3.py
jacus.py
PyVnc2swf
Webstemmer
textcrawler.py
(Webstemmer に統合されました)
mp3cat.py
unagi.py
s.py
netmonitor.py
html2txt.py
(Webstemmer に統合されました)
pycdb.py
unimap.py
pyfetchmail.py
watcher.py
tateiscanna.py
$ ./tateiscanna.py LIST リニトカ $ ./tateiscanna.py トントカイモ SYSTEM
PyOne
pgrep.py
makegif.py
fuser.py
iters.py
romm.py
chnum.py
一億五千万
→ 150000000
)
bidi.py
pdfparser.py
swfparser.py
encdet.py
abstfilter.py
pstring.py
regpat.py
texparser.py
lcs.py
sexpr.py
reg.py
def forall(pred, seq): # inefficient return reduce(lambda r,x: r and pred(x), seq, True)
def exists(pred, seq): # inefficient return reduce(lambda r,x: r or pred(x), seq, False)
一方の配列をみて他方に代入する場合:
for (i,x) in enumerate(seq1): if condition(x): seq2[i] = x
代入の必要がない場合:
for (x,y) in zip(seq1, seq2): # itertools could speed it up if condition(x,y): ...
同値類をまとめる:
def equivalence(feqv, objs): eqs = [] for x in objs: eq1 = [x] i = 0 while i < len(eqs): if exists(lambda y:feqv(x,y), eqs[i]): eq1.extend(eqs[i]) del(eqs[i]) else: i += 1 eqs.append(eq1) return eqs print equivalence(lambda x,y:(x%5)==(y%5), [1,1,2,3,4,5,1,2,3,4,0]) # => [[1,1,1], [2,2], [3,3], [4,4], [0,5]]
zip を使う。(from 人生の敗北者スレ)
>>> apply(zip, [[1,2], [3,4]]) [(1, 3), (2, 4)]
python -u
と同様の効果を起動後に実現する
import sys, os sys.stdin = os.fdopen(0, "rb", 0) sys.stdout = os.fdopen(1, "wb", 0) sys.stderr = os.fdopen(2, "wb", 0)
import sys def main(argv): import getopt def usage(): print 'usage: %s [-a] [-b] [-c arg] [-d arg] [file ...]' % argv[0] return 100 try: opts, args = getopt.getopt(argv[1:], 'abc:d:') except getopt.GetoptError: return usage() (opta, optb, optc, optd) = (False, False, None, None) for (k, v) in opts: if k == '-a': opta = True elif k == '-b': optb = True elif k == '-c': optc = v elif k == '-d': optd = v doit(args) return 0 if __name__ == '__main__': sys.exit(main(sys.argv))
Last Modified: Sat Feb 27 07:52:38 UTC 2010
Yusuke Shinyama