尝试使用终端运行python脚本并在终端中传递输入

时间:2019-11-23 06:31:44

标签: python-3.x rest api args

我正在尝试从终端传递输入并运行python脚本,我的输入是url http://localhost:8080/api/auth,有效载荷是{ "request":"success","input":[ { "type":" ", "content":[ { "type":" ", "meta":{ "sample_type":" " , deatail":" "} ] } ], "output":[ { "type":" ","content":[ { "type":"", "meta":{ "sample_type":"", }, "deatils":" " } ] } ] }

我的代码在这里:

 def get_response():
        auth_access_Token = get_token()
        parser = argparse.ArgumentParser(description='A tutorial of argparse!')
        parser.add_argument("--url", action="store_true", required=True )
        parser.add_argument("--payload", action="store_true", required=True )
        a = parser.parse_args()
        url = a.url
        Header = {'Auth': 'Bearer ' + str(auth_access_Token)}
        payload = a.payload

        resp = requests.post(url, headers=Header, json=payload)
        print(json.loads(resp.content))


   get_response()

当我使用

传递输入信息时
python test.py --url http://localhost:8080/api/auth --payload `{ "request":"success","input":[ { "type":" ", "content":[ { "type":" ", "meta":{ "sample_type":" " , deatail":" "} ] } ], "output":[ { "type":" ","content":[ { "type":"", "meta":{  "sample_type":"",  },  "deatils":" " } ] }  ] }`

这给了我error: unrecognized arguments

我在哪里错了?

预先感谢

1 个答案:

答案 0 :(得分:0)

因此,您的脚本有几个问题。

action的值应为store,而不是store_truestore_true用于TRUEFALSE的值。

第二,为了处理输入参数中的空格,必须将其用双引号引起来。由于有效载荷值包含双引号,因此必须将其替换为单引号。

这是修改后的代码

    parser = argparse.ArgumentParser(description='A tutorial of argparse!')
    parser.add_argument('--url', action="store", nargs=1, type=str, required=True )
    parser.add_argument("--payload", nargs=1, type=str, required=True )
    a = parser.parse_args()
    print(a)

因此,当您像这样调用脚本时:

> python test1.py --url http://localhost:8080/api/auth --payload "{ 'request':'success','input':[ { 'type':' ', 'content':[ { 'type':' ', 'meta':{ 'sample_type':' ' , deatail':' '} ] } ], 'output':[ { 'type':' ','content':[ { 'type':'', 'meta':{  'sample_type':'',  },  'deatils':' ' } ] }  ] }"

编辑

您必须处理有效载荷数据。 我也发现您传递的数据格式不正确。 "meta":{ "sample_type":" " , deatail":" "},请参见deatail之前的引号和一些匹配的花括号。

payload = a.payload[0]
payload = re.sub(r"'", "\"", payload)
resp = requests.post(url, headers=Header, json=payload)
print(json.loads(resp.content))