如何使用python脚本编程地将Curl命令转换为python请求

2024-05-17 08:09:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python脚本将curl命令转换为python请求。我可以找到uncrl模块,并可以使用它成功地转换一些curl命令。但我面临的问题是使我的脚本通用于所有curl命令。以下问题阻碍了我的工作。我正在尝试用python编写实用程序,它将从文本文件中获取curl命令,并将命令逐个转换为python请求。在

  1. 诸如GET/POST等命令类型不被uncrl接受。在
  2. Curl命令选项,如-u-X等被拒绝。在
  3. 对于删除请求,我应该如何使用uncrl。在

curl-v-k-H“Content-Type:application/json”-H“同步id:00000000”- 0000-0000-0000-000000000001“-H”同步令牌: nhbszphbtflz9gm1nlr5f8e0wlgqitg4o00jb006m5vcs00xvqzrdhcftyv4yozd5s02z3x1irhowqinglp2og“-H”实例_id:实例_id“-X GET”example.com网站' curl-v-k-H“内容类型:application/json”-H“sync_id:00000000-0000-0000-0000-000000000001”-H“同步标记:nhbszphbtflz9gm1nlr5f8e0wlgqitg4o00jb006m5vcs00xvqzrdhcftyv4yozd5s02z3x1irhowqinglp2og”-H“instance_id:instance_id”-X POST-d'[{“id”:“1”,“名称”:“1”,“env_mapping_name”:“a”,“env_mapping_id”:“a1”}]'example.com网站'

我用来转换的python代码。在

import uncurl
command = 'curl -v -k -H "Content-Type: application/json" -H "sync_id: 00000000-0000-0000-0000-000000000001" -H "sync_token: NhbSzPhbtFlZ9Gm1nLr5f8e0WLGQitG4o00jb006m5Vcs00XVqzRdHcFtyv4YOzd5S02Z3x1iR5OWQINgLP2Og" -H "instance_id: instance_id"  -X GET 'example.com'

print uncurl.parse(command)

我去掉了tags和curl选项,它们给了我如下的异常。在

^{pr2}$

当我使用下面的curl命令进行转换时,我得到了一个异常。在

'curl -v --proxy-user "00dcf6e7-4513-4e46-bbaf-ef4cac8f8d47":"XUmh8pIG68Zo" -X GET "example.com" --proxy 127.0.0.1:8080 -k'

这里的-U选项很麻烦。同样的,我也观察到了其他的例外情况。所以我不确定我是否正确地使用了uncril。 所有curl命令都是在使用联机转换器时从curl.trillworks.com网站. 你能告诉我如何把curl命令转换成python请求吗?在

****:-我可以使用“runcurl”包发送curl命令。根据我的理解,uncrl包有发送curl请求的局限性,runcurl通过提供'execute'方法来连接curl请求。我使用了下面的代码。 import runcurl cmd = "curl -v -u "00dcf6e7-4513-4e46-bbaf-ef4cac8f8d47":"XUmh8pIG68Zo" -X GET "https://example.com" -k" #strip off the curl options like -k, -v, -X, GET which causes runcurl to #throw exception. try: code = runcurl.execute(command) except: code = 400 //Write the failed cases in some file for further references

如前所述,我必须去掉curl支持的选项,比如'-k'、'-v'。在上面的curl命令中,身份验证选项与“-u”选项一起提供。但是runcurl抛出了一个异常。 在这一点上我正在寻求帮助。我的期望是对于curl支持的必需选项,“runcurl”不应该出错。例如:-'-u'选项。我错过什么了吗?有没有更好的方法来处理上面的curl命令? 注意:-我尽量避免使用'subprocess.call在我的代码中调用curl命令。在


Tags: instance代码命令comidjsongetapplication