Так у меня есть небольшой скрипт, который я хотел бы использовать, чтобы загрузить некоторые PDF-файлы в моей цитируемости сайте-оф-выбор (citeulike.org)питон файл Mechanize загрузить UnicodeDecode ошибку
Дело в том, он не работает. Он делает это:
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()
NB: Я могу видеть это чтение в файле правильно (и существует). Также обратите внимание, что я делаю это в другом месте
self.browser = mechanize.Browser() self.browser.set_handle_robots(False) self.browser.addheaders = [ ("User-agent", '[email protected] citeusyncpy/1.0'), ]
спасибо за это. Чтобы подтвердить [исправление в выпуске] (http://bugs.python.org/issue11898) @ ton1c, упомянутая проблема решена – willwade