2011-04-11 19 views
11

का उपयोग कर यूआरएल से पीडीएफ फाइल लिखें मैं पाइथन के मॉड्यूल urllib2 का उपयोग कर वेब सर्वर से उत्पन्न गतिशील पीडीएफ फाइल को सहेजने की कोशिश कर रहा हूं। मैं निम्नलिखित का उपयोग कोड सर्वर से डेटा प्राप्त करने के लिए और आदेश में एक स्थानीय डिस्क .:urllib2

import urllib2 
import cookielib 

theurl = 'https://myweb.com/?pdf&var1=1' 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders.append(('Cookie', cookie)) 
request = urllib2.Request(theurl) 

print("... Sending HTTP GET to %s" % theurl) 
f = opener.open(request) 
data = f.read() 
f.close() 
opener.close() 

FILE = open('report.pdf', "w") 
FILE.write(data) 
FILE.close() 

इस कोड को अच्छी तरह से चलता है, लेकिन लिखित पीडीएफ फाइल अच्छी तरह से मान्यता प्राप्त नहीं है में पीडीएफ स्टोर करने के लिए में एक फाइल करने के लिए कि डेटा लिखने के लिए एडोब रीडर द्वारा। अगर मैं मैन्युअल रूप से फ़ायरफ़ॉक्स का उपयोग कर अनुरोध करता हूं, तो मुझे फ़ाइल प्राप्त करने में कोई समस्या नहीं है और मैं इसे समस्याओं के साथ कल्पना कर सकता हूं। प्राप्त http शीर्षलेख (फ़ायरफ़ॉक्स और urrlib) की तुलना में केवल अंतर एक http शीर्षलेख फ़ील्ड है जिसे "ट्रांसफर-एन्कोडिंग = खंडित" कहा जाता है। यह फ़ील्ड फ़ायरफ़ॉक्स में प्राप्त होता है लेकिन ऐसा लगता है कि जब मैं urllib अनुरोध करता हूं तो प्राप्त नहीं होता है। कोई सुझाव?

उत्तर

17

कोशिश बदलते,

FILE = open('report.pdf', "w") 

को
FILE = open('report.pdf', "wb") 

अतिरिक्त 'बी' द्विआधारी मोड में लिखने के लिए इंगित करता है। वर्तमान में आप ASCII/टेक्स्ट मोड में एक बाइनरी फ़ाइल लिख रहे हैं।

+0

प्रत्यक्ष और सरल प्रतिक्रिया, बहुत बहुत धन्यवाद। – martinbedouret

+0

धन्यवाद जस्टिन, मैंने अभी जांच की है और यह अभी ठीक काम कर रहा है, बहुत सराहना की। – martinbedouret

+1

बढ़िया! आगे बढ़ें और उत्तर के बाईं ओर स्थित चेक मार्क पर क्लिक करें ताकि अन्य लोग जान सकें कि इसका उत्तर दिया गया है। –

संबंधित मुद्दे