實施例 - 任何bash的關鍵字(例如else
或in
)也將導致此:如何轉義與python關鍵字匹配的bash關鍵字?
$ 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
雙引號不能解決問題。
實施例 - 任何bash的關鍵字(例如else
或in
)也將導致此:如何轉義與python關鍵字匹配的bash關鍵字?
$ 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
雙引號不能解決問題。
這與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
換行)。
你確定嗎?對於循環工作正常('$ python -c'爲範圍(5)中的i:print i''),並且分號連接在導入後正常工作(sys中的'$ python -c'import sys; print「/ home」)。路徑')...我的語法不正確的是什麼? –
Python似乎不喜歡分號後的任何複合語句('for',''while','def'等)。例如,'x = 1;而False:pass會導致語法錯誤。 –
請參閱[語法](http://docs.python.org/2/reference/grammar.html)。如果我閱讀正確,只能用分號連接'small_stmt',並且包含'(expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt]',但不包括'compound_stmt's ('if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef |裝飾')。它看起來像是什麼東西;其他的東西:第三個東西'被排除了,因爲「別的東西」並不簡單。 – DSM
這裏是一個更辦法....位更直接
python -c "import sys; print '\n'.join(sys.path)"
連接返回一個字符串,它是可迭代的字符串(本例中是sys.path)的串聯。元素之間的分隔符是提供此方法的字符串,在本例中爲換行符。 – Guddu
它的工作原理,如果分號和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 ''"
導致什麼?什麼是錯誤? –
我相信你有一個語法錯誤;你省略了其餘的錯誤:'SyntaxError:invalid syntax' – Anew
正確,我又添加了它。 –