« お題7:整数とビット列の相互変換 | メイン | Pythonコード添削道場 コード募集 »

自由投稿

このページから、自由にコードを投稿できます。 ただし、コードには「どういう処理を行うプログラムか」ということをきちんと書いてくださいね。何を目的としたプログラムかがわからなければ添削のしようもありませんから。 また、1000行もあるプログラムだとか、シンタックスエラーで実行できないコードもご容赦願いますm(_ _)m

トラックバック

このエントリーのトラックバックURL:
http://www.nishiohirokazu.org/mt/mt-tb.cgi/605

コメント (3)

匿名:
# CSV(TSV, etc.)ファイルを読んでパースします。
# 行の情報を生成するジェネレータを返し、そのジェネレータは項目ごとの値を生成するジェネレータを返します。
# 区切り文字、エスケープ文字、ファイルエンコード指定対応。

getcsv = lambda fname, encoding=None, sep=',', esc='\\': ((c.strip().replace(esc, '') for c in re.split('(?<!%s)%s' % (esc.replace('\\', '\\\\'), sep.replace('\\', '\\\\')), line)) for line in codecs.open(fname, 'r', encoding))
匿名:
## 改行を入れておきました by 西尾
# CSV(TSV, etc.)ファイルを読んでパースします。
# 行の情報を生成するジェネレータを返し、そのジェネレータは項目ごとの値を生成するジェネレータを返します。
# 区切り文字、エスケープ文字、ファイルエンコード指定対応。

getcsv = lambda fname, encoding=None, sep=',', esc='\\': ((c.strip().replace(esc, '')
 for c in re.split('(?<!%s)%s' % (esc.replace('\\', '\\\\'), sep.replace('\\', '\\\\')), line))
 for line in codecs.open(fname, 'r', encoding))
odz:
# あるディレクトリの階層構造を保ったままフィルタプログラムにかけて
# 別ディレクトリに出力する
# Example:
#  python dir_filter.py -f from -t to -- grep zsh

import sys
import os
import subprocess

def main(src, dest, debug, commands):
    for src_file, dest_file in list_files(src, dest):
        if debug > 0:
            print >>sys.stderr, 'input_file:  %s' % input_file
            print >>sys.stderr, 'output_file: %s' % output_file

        output_dir = os.path.dirname(dest_file)
        if not os.path.exists(output_dir):
            if debug > 0: print >>sys.stderr, 'make directory: %s' % output_dir
            os.makedirs(output_dir)

        input_fp = file(src_file)
        output_fp = file(dest_file, 'w')
        try:
            process = subprocess.Popen(commands, stdin=input_fp, stdout=output_fp)
            process.wait()
        finally:
            input_fp.close()
            output_fp.close()

def list_files(src, dest):
    for child in os.listdir(src):
        path = os.path.join(src, child)
        if os.path.isfile(path):
            yield path, os.path.join(dest, child)
        elif os.path.isdir(path):
            for entry in list_files(path, os.path.join(dest, child)):
                yield entry

if __name__ == '__main__':
    import optparse
    parser = optparse.OptionParser()
    parser.add_option('-t', '--to', dest='dest')
    parser.add_option('-f', '--from', dest='src')
    parser.add_option('-d', '--debug', dest='debug', action='count')
    (options, args) = parser.parse_args()

    main(options.src, options.dest, options.debug, args)

コメントを投稿

About

2007年06月11日 20:45に投稿されたエントリーのページです。

ひとつ前の投稿は「お題7:整数とビット列の相互変換」です。

次の投稿は「Pythonコード添削道場 コード募集」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34