繁体   English   中英

用python中的请求编码

[英]Encoding with requests in python

遇到一个奇怪的问题。

我将字典作为POST请求的一部分传递给cgi脚本:

self.settings = {
    'SubmitCommands': ['C:\Python27\python.exe path\my_script.py']
}

这是我的代码:

    settings = self.settings

    # Make web call to CGI script
    user_agent = r'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    headers = {'User-Agent' : user_agent, "Accept": "text/plain"}
    response = requests.post(
            "path\CGI\cgi_script.py", 
            headers=headers, data=settings)

这是结果回溯:

Traceback (most recent call last):
  File "path\CGI\cgi_script.py", line 119, in initi
alizeJob
    self.submitCommands = eval(inputSubmitCommands)
  File "<string>", line 1
    C:\Python27\python.exe path\my_script.py
     ^
SyntaxError: invalid syntax

但是,如果以老式方式执行此操作,则不会获得回溯:

    settings = self.settings

    # Set and encode parameters
    params = urllib.urlencode(settings)

    # Make web call to CGI script
    user_agent = r'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    headers = {'User-Agent' : user_agent,
                "Content-type": "application/x-www-form-urlencoded",
                "Accept": "text/plain"}
    conn = httplib.HTTPConnection(self.host)
    conn.request("POST", "path/CGI/cgi_script.py", params, headers)
    response = conn.getresponse()

今天早些时候,有人在Stack Overflow上警告我选择库是因为它是新库。 看来我应该听他们的。 但是,我仍然对问题出在哪里感到好奇。

Python将反斜杠解释为转义代码。 只需将它们加倍即可解决。

self.settings = {
    'SubmitCommands': ['C:\\Python27\\python.exe path\\my_script.py']
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM