[英]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.