我有這樣的輸入: python script.py --key'(「music」,「aaa」)'--date'(「01/01/1990」,0,0)'Python3 does not detect tuple
而且我做的:
constrain = literal_eval(sys.argv[2])
print(type(constrain))
print(type(sys.argv[4]))
而且所有輸出海峽,而他們應該是元組。輸入無法更改!
我有這樣的輸入: python script.py --key'(「music」,「aaa」)'--date'(「01/01/1990」,0,0)'Python3 does not detect tuple
而且我做的:
constrain = literal_eval(sys.argv[2])
print(type(constrain))
print(type(sys.argv[4]))
而且所有輸出海峽,而他們應該是元組。輸入無法更改!
你的命令行應該可以從MSYS或Linux完美工作,但是在這裏你是從windows shell運行的。
Windows shell不會將簡單引號視爲syntatcic。它們直接傳遞給你的Python代碼。最重要的是,雙引號被刪除,這使得你的第二個參數'(music,aaa)'
傳遞給python:沒辦法,你可以literal_eval
那。所以,你的輸入字符串有改變(或您的操作系統:))
做這個調用代碼:
python script.py --key "(""music"",""aaa"")" --date "(""01/01/1990"",0,0)"
你引用的論據和論點雙引號。並專門使用雙引號。
編輯:甚至更好的(將在Linux和Windows上工作):使用你的參數內簡單的報價,外面的雙引號(literal_eval
不是json
:它理解既簡單&雙引號!):
python script.py --key "('music','aaa')" --date "('01/01/1990',0,0)"
現在我越來越:
<type 'tuple'>
<type 'str'>
(你str
,因爲第四個參數始終是一個字符串,你可能忘了literal_eval
吧)
和print(constrain)
產量:
('music', 'aaa')
(所以它不是一個Python的問題,而是一個CMD問題)
如果你加你明白了什麼'打印(sys.argv中)'? – user2357112
你用什麼* shell *來運行命令行?聽起來好像無論你用什麼來調用Python都不會解析出引號,所以Python被髮送'''(\「music \」,\「aaa \」)'「'。 –
我只能得到(class'str') – Dani