簡體   English   中英

python機械化文件上傳UnicodeDecode錯誤

[英]python mechanize file upload UnicodeDecode error

所以我有一個小腳本,可以用來將一些PDF上載到我的引文選擇站點(citeulike.org)

事情是行不通的。 它這樣做:

 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'), ] 

完整代碼在這里

嘗試檢查這個類似的問題

To clarify, the message is constructed in httplib from the method, URL, headers, etc. If any of these is Unicode, the whole string gets converted to Unicode (I presume this is normal Python behavior). Then if you try to append a UTF-8 string you get the error I described in the original question...

從外觀上看,正確的標頭可以解決的編碼問題。

您也可以檢查此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM