CORDEA blog

Android applications engineer

optparseでエスケープ文字を受け取りたい時

optparseはエスケープ文字をそのまま入力すると期待した結果と異なる挙動を示すことがあります。
これは一部のコマンド(sortなど)にも言えます。
しばらくしたら忘れてそうなのでメモ。

試しに次のようなプログラムを書いてみました。

from optparse import OptionParser

def optSettings():
    usage="hogehoge"
    version="0.0.1"
    parser = OptionParser(usage=usage, version=version)

    parser.add_option(
            "-a",
            action = "store",
            type   = "str",
            dest   = "test"
            )

    return parser.parse_args()

if __name__ == '__main__':
    options, args = optSettings()
    print >>>,options.test


このプログラムで次のように実行すれば"hogehoge"が帰ってきます。

% python optparse_test.py -a "hogehoge"
>>> hogehoge

'\t'や'\n'はこうなります。

% python optparse_test.py  -a "\t"
>>> \t


'\t'の場合は次のような入力によってタブを出力できます。
'#'はわかりやすいように入れているだけです。

% python optparse_test.py  -a $'#\t#'
>>> #	#


ちなみに始めに書いたsortコマンドの場合はこんな感じで。

% sort -t $'\t' -k 2 -nr

おわり。