我的要求是通過一個元組作爲命令行參數等傳遞一個元組作爲命令行參數
--data (1,2,3,4)
我試圖使用模塊,但如果我通過這樣它正在接收的字符串'(1,2,3,4)'
。我嘗試給type=tuple
argparse.add_argument
,但在這裏沒用。
是否需要添加新的類型類並將其傳遞給參數add_argument
?
更新
我試過ast.literal_eval
基於答案。感謝那。但它在結果中給出空格,如下所示。
(1,2,3,4)
<type 'str'>
(1, 2, 3, 4)
<type 'tuple'>
每重複,'ast.literal_eval'是一個合適的'type'參數 – jonrsharpe
根據'argparse'文檔,'type'必須是一個**函數**('callable'),它接受一個簡單的字符串並將其轉換爲所需的對象。 'tuple('(1,2)')'接受一個字符串,但是分成字符,例如'('(','1',',','2',')')'。還要注意你的用戶給你'--data(1,2,3,4)'。外殼在空白處分裂。 – hpaulj
重複的鏈接與解析像''(1,2)''這樣的字符串有關,但不涉及問題的'argparse'一側。 – hpaulj