python mechanize文件上载UnicodeDecode错误
所以我有一个小脚本,我想用它把一些PDF上传到我选择的引文网站(citeulike.org) 问题是它不起作用。它是这样做的: 注意:我可以正确地看到它在文件中读取(它确实存在)。还请注意,我在其他地方也这样做 尝试检查此项python mechanize文件上载UnicodeDecode错误,python,file-upload,mechanize,Python,File Upload,Mechanize,所以我有一个小脚本,我想用它把一些PDF上传到我选择的引文网站(citeulike.org) 问题是它不起作用。它是这样做的: 注意:我可以正确地看到它在文件中读取(它确实存在)。还请注意,我在其他地方也这样做 尝试检查此项 为了澄清,消息是在httplib中根据方法、URL、头等构造的。如果其中任何一个是Unicode,则整个字符串将转换为Unicode(我认为这是正常的Python行为)。然后,如果您尝试附加一个UTF-8字符串,您将得到我在原始问题中描述的错误… 从外观上看,这是一个编码问
为了澄清,消息是在httplib中根据方法、URL、头等构造的。如果其中任何一个是Unicode,则整个字符串将转换为Unicode(我认为这是正常的Python行为)。然后,如果您尝试附加一个UTF-8字符串,您将得到我在原始问题中描述的错误…
从外观上看,这是一个编码问题,适当的头可以修复
您也可以查看此信息。谢谢。确认@ton1c已解决问题
so want to upload /Users/willwade/Dropbox/Papers/price_promoting_643127.pdf to 12589610
Traceback (most recent call last):
File "citeuupload.py", line 167, in <module>
cureader.parseUserBibTex()
File "citeuupload.py", line 160, in parseUserBibTex
self.uploadFileToCitation(b['citeulike-article-id'],self.localpapers+fileorfalse)
File "citeuupload.py", line 138, in uploadFileToCitation
resp = self.browser.submit()
File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 541, in submit
File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 203, in open
File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 230, in _mech_open
File "build/bdist.macosx-10.8-intel/egg/mechanize/_opener.py", line 193, in open
File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 344, in _open
File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 332, in _call_chain
File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 1142, in http_open
File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 1115, in do_open
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 955, in request
self._send_request(method, url, body, headers)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 989, in _send_request
self.endheaders(body)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 951, in endheaders
self._send_output(message_body)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 809, in _send_output
msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 544: ordinal not in range(128)
def uploadFileToCitation(self,artid,file):
print 'so want to upload', file, ' to ', artid
self.browser.open('http://www.citeulike.org/user/'+cUser+'/article/'+artid)
self.browser.select_form(name="fileupload_frm")
self.browser.form.add_file(open(file, 'rb'), 'application/pdf', file, name='file')
try:
resp = self.browser.submit()
self.wait_for_api_limit()
except mechanize.HTTPError, e:
print 'error'
print e.getcode()
print resp.read()
exit()
self.browser = mechanize.Browser()
self.browser.set_handle_robots(False)
self.browser.addheaders = [
("User-agent", 'me@me.com citeusyncpy/1.0'),
]