1

例 - 任意の bash キーワード (例:elseまたはin) もこれを引き起こします。

$ python -c 'import sys;for p in sys.path:print p'
  File "<string>", line 1
    import sys;for p in sys.path:print p
                 ^
SyntaxError: invalid syntax

二重引用符はそれを修正しません。

4

4 に答える 4

6

forこれは、Bash キーワードであるという事実とは関係ありません。それだけです

import sys;for p in sys.path:print p

は有効な Python 構文ではありません。python引数なしで実行し、プロンプトでそれを入力すると、同じエラーが発生します。

改行を追加することで修正できます:

import sys
for p in sys.path:print p

これは、次のいずれかを記述することで Bash コマンドで実行できます。

python -c ' import sys
            for p in sys.path:print p
          '

またはこれ:

python -c $'import sys\nfor p in sys.path:print p'

(ここで、改行$'...'などの文字列で C のようなエスケープ シーケンスを許可する Bash 構文)。\n

于 2013-02-06T02:09:27.280 に答える
1

ここにもう1つのアプローチがあります....もう少し直接的です

python -c "import sys; print '\n'.join(sys.path)"
于 2013-02-06T02:28:39.727 に答える
1

以下をお試しください

python -c "exec(\"import sys;\\nfor p in sys.path:print p\")"
于 2013-02-06T02:15:09.330 に答える
0

セミコロンとcompound_stmtキーワードが隣接していない場合に機能します。

# instead of '; for'
python -c 'import sys; print [p for p in sys.path]'

また

# instead of '; if'
python -c "x=1; print x if x>0 else ''"
于 2013-05-11T00:08:46.083 に答える