我想在命令行上傳遞字典。下面的代碼失敗:強制用戶在命令行上傳遞字典
import json
import argparse
parser = argparse.ArgumentParser(description='Test Arg Parse')
parser.add_argument('-d', '--dict', type=dict, required=False)
variables = vars(parser.parse_args())
print json.dumps(variables)
當我運行程序,它會引發以下錯誤:
C:\KTLO\bin>python TestProg.py -d "{'a':'b'}"
usage: TestProg.py [-h] [-d DICT]
TestProg.py: error: argument -d/--dict: invalid dict value: "{'a':'b'}"
編輯1:指定 'json.loads' 或 '字典' 不改變輸出並仍然會拋出錯誤。
您需要將'json.loads'作爲'type',這與'default'和'dict'不接受字典的字符串表示形式是沒有任何意義的。 – jonrsharpe
@Siva在接受的答案中,它顯示了一個黑客,它實際上不起作用。 – psychoCoder
將'json.loads'作爲'type'傳遞不是黑客行爲,它確實有效。 – jonrsharpe