2016-07-07 14 views
-1

사전을 명령 줄에 전달하고 싶습니다. 다음 코드는 실패 지정 'json.loads'또는 '딕셔너리는'하지 않습니다 : 1사용자가 명령 줄에서 사전을 전달하도록합니다.

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'}" 

편집 :

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) 

내가 프로그램을 실행하고있어, 다음과 같은 오류가 발생합니다 출력을 변경하고 여전히 오류를 던집니다.

+2

''json.loads'를'type'으로 만들 필요가 있습니다.'default'와'dict'는 사전의 문자열 표현으로 받아들이지 않습니다. – jonrsharpe

+1

@ 시바 수락 된 답변에서 해킹이 표시되고 실제로 작동하지 않습니다. – psychoCoder

+1

''json.loads'를'type'으로 전달하는 것은 해킹이 아니며 작동합니다. – jonrsharpe

답변

0

python TestProg.py -d '{"a":"b"}' 

작은 따옴표가 유효한 JSON 없습니다보십시오.

+0

'C : \ KTLO \ bin> python TestProg.py -d '{ "a": "b"}' 사용법 : TestProg.py [-h] [-d DICT] TestProg.py : 오류 : argument -d/- dict : dict 값이 잘못되었습니다 : " '{a : b}'" '작동하지 않습니다 – psychoCoder

+1

''default =''는''type =''이어야합니다. : //stackoverflow.com/a/18609361/893159 – allo

+0

@psychoCoder는 키와 값이 아닌 전체 객체를 인용한다는 점에 유의하십시오. – jonrsharpe