2012-05-26 7 views
10

python -cを使用して文字列として渡されたpythonコマンドを実行することはできますか?誰かが例を挙げることができます。pythonをコマンドラインで文字列として渡して実行する-c

+1

は、あなたがこれまでにしようとしているものを私たちと共有することはできますか? – Levon

+0

実際には、私はpython -c ""形式を使用する方法を探していました。 – kasa

答えて

7

単一文字列python -cを使用できます。しかし文字列のための質問が尋ねると、あなたが標準入力に渡す必要があります。

$ python << EOF 
> import sys 
> print sys.version 
> EOF 
2.7.3 (default, Apr 13 2012, 20:16:59) 
[GCC 4.6.3 20120306 (Red Hat 4.6.3-2)] 
+4

答えが見つかりました。これを端末に貼り付けてコピーしてください。 python -c "import sys; x = 'hello world'; print x;" – kasa

+0

これは* a *文字列です。あなたが*文字列*を望むなら、あなたはstdinにそれらを与える必要があります。 –

0

Pythonはevalを持っています。このスクリプトを試してみてください。

import sys 

str = sys.argv[1] 
eval(str) 

はこのようにそれを起動します。

$ python3 eval.py 'print(1 + 1)' 
2 
15

あなたはPythonは文字列を実行するために取得するために-cを使用することができます。たとえば:

python3 -c "print(5)"

しかし、エスケープ文字(例えば\n)を使用する方法があるようには思えません。だから、必要ならばecho -eまたはprintfのパイプを使用してください。たとえば:

$ printf "import sys\nprint(sys.path)" | python3

+0

'python3 -c" import sys; print(sys.path) "は簡単です。 – mattmc3

+0

@ mattmc3インデントが減少するブロックをセミコロンで終了することはできません。だからそれはもっと限られている。たとえば、関数を作成して実際に呼び出したり、if-elseを使用したり、ifに続いて無条件のコードを使用することはできません。しかし、(可能であれば)それは簡単です。 – Kevin