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

时间:2017-04-21 17:54:21

标签: python curl

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

  1. uncurl不接受GET / POST等命令类型。
  2. 拒绝-u-X等卷曲命令选项。
  3. 对于DELETE请求,我应该如何使用uncurl。
  4. 卷曲-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命令。

0 个答案:

没有答案