我正在尝试使用python脚本将curl命令转换为python请求。我可以找到uncurl模块,并可以使用它成功转换少数curl命令。但我面临的问题是使我的脚本对所有curl命令都是通用的。以下问题阻碍了我的工作。我试图在python中编写实用程序,它将从文本文件中获取curl命令,并将命令逐个转换为python请求。
-u
,-X
等卷曲命令选项。 卷曲-v -k -H"内容类型:application / json" -H" sync_id:00000000- 0000-0000-0000-000000000001" -H" sync_token: NhbSzPhbtFlZ9Gm1nLr5f8e0WLGQitG4o00jb006m5Vcs00XVqzRdHcFtyv4YOzd5S02Z3x1iR5OWQINgLP2Og" -H" instance_id:instance_id" -X GET' example.com' curl -v -k -H"内容类型:application / json" -H" sync_id:00000000-0000-0000-0000-000000000001" -H" sync_token:NhbSzPhbtFlZ9Gm1nLr5f8e0WLGQitG4o00jb006m5Vcs00XVqzRdHcFtyv4YOzd5S02Z3x1iR5OWQINgLP2Og" -H" instance_id:instance_id" -X POST -d' [{" id":" 1"," name":" 1",&#34 ; 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)
我已经剥离了标签和卷曲选项,这些选项给出了例外情况,如下所示。
def stripTags(command):
'''Strip off the unwanted tags from the curl command'''
print '\nCommand is *********************************', command
command = command.replace('-X', '')
command = command.replace('-k', '')
command = command.replace('-v', '')
command = command.replace(' \'', ' \"')
command = command.replace('\' ', '\" ')
command = command.replace('\'', '\"')
command = command.replace(' GET ', '')
command = command.replace(' POST ', '')
command = command.replace(' PUT ', '')
command = command.replace(' POST ', '')
command = command.replace(' DELETE ', '')
print '\nStripped string is =============', command
return command
当我使用以下curl命令进行转换时,我遇到了异常。
' curl -v --proxy-user" 00dcf6e7-4513-4e46-bbaf-ef4cac8f8d47":" XUmh8pIG68Zo" -X GET" example.com" --proxy 127.0.0.1:8080 -k'
这里的-U
选项令人烦恼。同样,我还观察到其他选项。所以我不确定我是否正确使用uncurl。
当我使用curl.trillworks.com的在线转换器时,所有curl命令都被转换。
能否请您提供有关如何将curl命令转换为python请求的指针?
****: - 我可以使用' runcurl'发送curl命令。包。根据我的理解,uncurl包具有发送curl请求的限制,runcurl通过提供“执行”来进行桥接。方法。我使用以下代码来执行此操作。
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正在抛出异常。 我正在寻求这方面的帮助。我的期望是' runcurl'不应该为curl支持的必需选项输出错误。例如: - ' -u'选项。我在这里错过了吗?有没有更好的处理上面的curl命令的方法? 注意: - 我试图避免使用' subprocess.call()'在我的代码中调用curl命令。