1. ホーム
  2. パイソン

[解決済み】1行コマンドラインで複数行のステートメントを実行?

2022-04-04 03:01:28

質問

Pythonを使っています。 -c を使ってワンライナー・ループを実行する、つまり。

$ python -c "for r in range(10): print 'rob'"

これは問題なく動作します。しかし、forループの前にモジュールをインポートすると、シンタックスエラーが発生します。

$ python -c "import sys; for r in range(10): print 'rob'"
  File "<string>", line 1
    import sys; for r in range(10): print 'rob'
              ^
SyntaxError: invalid syntax

どうすれば直るのでしょうか?

これをワンライナーにして、Makefileに入れられるようにすることが重要なんです。

解決方法は?

次のような方法があります。

echo -e "import sys\nfor r in range(10): print 'rob'" | python

またはパイプなし。

python -c "exec(\"import sys\nfor r in range(10): print 'rob'\")"

または

(echo "import sys" ; echo "for r in range(10): print 'rob'") | python

または SilentGhostの回答 / Crastの回答