Python Tips: ワンライナーが書きたい

Pythonでワンライナーコマンドを書く方法をご紹介します。

Pythonでワンライナーを書くには c オプションを使います。

python -c "print("hello world")"
# hello world と出力される

ヘルプドキュメントによると、 c は cmd の c だとか。個人的にはc というのはあまり直感的でなくて覚えにくい気が、します。。

引数を扱いたい場合には sys.argv を使います。

python -c "import sys; print(sys.argv)" a b c def
# ['-c', 'a', 'b', 'c', 'def'] と出力される

sys.argv を使えば、たとえば、引数の合計値を計算することなんかもできます。

python -c "import sys; print(sum([int(x) for x in sys.argv[1:]]))" 3 4 5
# 合計の 12 が出力される

また、標準入力を扱いたい場合には input() もしくは sys.stdin.read() を使います。

hayato:Desktop$ pwd | python -c "import sys; print(input().split('/'))"
# カレントディレクトリを構成するディレクトリが配列に分割されて表示される

以上です。

・・・ということで、ほんの数例を見てみただけでも、Pythonのワンライナーというのはあまり使い勝手がよい感じではないことがよくわかります笑

他のスクリプト言語のワンライナーや他のコマンドなんかも比べてみても、あえてPythonでワンライナーを書きたくなる場面というのは、あまり多くはなさそうです。

参考