2010-03-23 35 views
6

मैं नहीं कर सकते एक फ़ाइल को पढ़ने पढ़ा है, और मैं समझता हूँ कि न क्यों:एक बाइनरी फ़ाइल (अजगर)

f = open("test/test.pdf", "r") 
data = list(f.read()) 
print data 

रिटर्न: []

मैं एक पीडीएफ खोलने के लिए, और हर बाइट को निकालने के लिए, चाहते हैं और इसे एक सूची में रखो।

मेरे कोड में क्या गलत है? :(

धन्यवाद,

+0

वास्तव में परीक्षण/test.pdf में कितने बाइट हैं? –

उत्तर

10
f = open("test/test.pdf", "rb") 

जब पढ़ने और Windows पर लेखन। अन्यथा ओएस चुपचाप तब्दील हो क्या यह "अंत लाइन" मानता है, जिससे आप द्विआधारी के लिए छद्म मोड "बी" में शामिल करना चाहिए आई/ओ भ्रष्टाचार।

1

जोनाथन सही है कि आप द्विआधारी मोड में फ़ाइल खोलने की जानी चाहिए अगर आप खिड़कियों पर कर रहे हैं, एक PDF फ़ाइल "% PDF-" के साथ शुरू होगा है।

हालांकि, जो कम से कम होगा इस पर ध्यान दिए बिना कि आप बाइनरी मोड का उपयोग कर रहे हैं या नहीं।

तो मुझे ऐसा लगता है कि अपने "परीक्षण/test.pdf" एक खाली फ़ाइल

0
  • के रूप में सबसे अच्छा के रूप में मैं पीडीएफ प्रारूप को समझने, एक pdf फ़ाइल एक बाइनरी फ़ाइल नहीं होना चाहिए। यह एक टेक्स्ट फ़ाइल होनी चाहिए जिसमें बहुत से बाइनरी ब्लब्स हो सकते हैं। मै गलत हो सकता हूँ।
  • विंडोज़ पर, यदि आप बाइनरी फ़ाइल खोल रहे हैं, तो आपको अपनी फ़ाइल के मोड में b शामिल करना होगा, यानी open(filename, "rb")
    • यूनिक्स जैसी प्रणालियों पर, b कुछ भी चोट नहीं पहुंचाता है, हालांकि इसका कोई मतलब नहीं है।
  • हमेशा अपनी फ़ाइलों के साथ एक संदर्भ प्रबंधक का उपयोग करें। यही कहना है, f = open("test/test.pdf", "rb") लिखने के बजाय, with open("test/test.pdf", "r") as f: कहें। यह आश्वासन देगा कि आपकी फाइल हमेशा बंद हो जाती है।
  • list(f.read()) अक्सर उपयोगी कोड होने की संभावना नहीं है। f.read()str reaurns और list पर कॉल करने से यह वर्णों की एक सूची (एक बाइट स्ट्रिंग) बनाता है। यह बहुत ही कम जरूरत है।
  • बाइनरी या टेक्स्ट या जो कुछ भी, read काम करना चाहिए। क्या आप सकारात्मक हैं कि test/test.pdf में कुछ भी है? ऐसा लगता है कि पाइथन ऐसा नहीं लगता है।
0

क्या मंच आप पर चल रहे हैं?

Windows XP पर अजगर 2.6 का उपयोग करना, मैं:

च = खुला ("14500lf.pdf", "आर")
डेटा = सूची (f.read())
प्रिंट डेटा
[ '%', 'पी', 'डी', 'एफ', '-', '1', '।',' 5 ',' \ r ','% ',' \ xe2 ',' \ xe3 ',' \ xcf ',' \ xd3 ',' \ n ',' 1 ',' ',' 0 ' , '', 'ओ', 'बी', 'जे', '<', '<', '/', 'सी', 'ओ', 'एन', 'टी', 'ई', 'एन' ',' टी ',' एस ',' ',' 3 ',' ',' 0 ',' ',' आर ','/',' टी ',' वाई ',' पी ',' ई ' , '/', 'पी', 'ए', 'जी', 'ई', '/', 'पी', 'ए', 'आर', 'ई', 'एन', 'टी', ' ',' 8 ',' 7 ',' ',' 0 ',' ',' आर ','/',' टी ',' एच ',' यू ',' एम ',' बी ',' ' , '7', '1', '', '0', '', 'आर', '/', 'आर', 'ओ', 'टी', 'ए', 'टी', 'ई' , '', '0', '/', 'एम', 'ई', 'डी', 'मैं', 'ए', 'बी', 'ओ', 'एक्स', '[', '0 ',' ',' 0 ',' ',' 6 ',' 1 ',' 2 ',' ',' 7 ',' 9 ',' 2 ','] ','/',' सी ' , 'आर', 'ओ', 'पी', 'बी', 'ओ', 'एक्स', '[', '0', '', '0', '', '6', '1' , '2', '', '7', '9', '2', ']', '/', 'आर', 'ई', 'एस', 'ओ', 'यू', ' आर ',' सी ',' ई ',' एस ',' ',' 2 ',' ',' 0 ',' ',' आर ','> ','> ',' \ r ',' ई ',' एन ',' डी ',' ओ ',' बी ',' जे ',' आर ',' 2 ',' ',' 0 ',' ',' ओ ',' बी ', 'जे', '<', '<', '/', 'सी', 'ओ', 'एल', 'ओ', 'आर', 'एस', 'पी', 'ए', 'सी' ',' ई ',' < ',' < ','/',' डी ',' ई ',' एफ ',' ए ',' यू ',' एल ',' टी ',' आर ',' जी ',' बी ' , '', '1', '0', '0', '', '0', '', 'आर', '>', '>', '/', 'एफ', 'ओ', 'एन', 'टी', '<', '<', '/', 'एफ', '5', '', '9', '6', '', '0', '', ' आर ','/',' एफ ',' 7 ',' ',' 9 ',' 7 ',' ',' 0 ',' ',' आर ','/',' एफ ',' 9 ',' ',' 1 ',' 0 ',' 6 ',' ',' 0 ',' ',' आर ','/',' एफ ',' 1 ',' 1 ',' ', '1', '0', '7', '', '0', '', 'आर', '/', 'एफ', '1', '4', '', '1', ' 1 ',' 1 ',' ',' 0 ',' ',' आर ','/',' एफ ',' 1 ',' 6 ',' ',' 1 ',' 1 ',' 6 ',' ',' 0 ',' ',' आर ','/',' एफ ',' 1 ',' 7 ',' ', ' 1 ',' 1 ',' 7 ',' ' , '0', '', 'आर', '/', 'एफ', '1', '3', '', '1', '1', '2', '', '0', '', 'आर', '>', '>', '/', 'पी', 'आर', 'ओ', 'सी', 'एस', 'ई', 'टी', '[' , '/', 'पी', 'डी', 'एफ', '/', 'टी', 'ई', 'एक्स', 'टी', ']', '>', '>', ' \ r ',' e ',' n ',' d ',' o ',' b ',' j ',' \ r ',' 3 ',' ',' 0 ',' ',' o ' , 'बी', 'जे', '<', '<', '/', 'एल', 'ई' , 'एन', 'जी', 'टी', 'एच', '', '4', '', '0', '', 'आर', '/', 'एफ', 'i', 'एल', 'टी', 'ई', 'आर', '/', 'एफ', 'एल', 'ए', 'टी', 'ई', 'डी', 'ई', 'सी' ',' ओ ',' डी ',' ई ','> ','> ',' एस ',' टी ',' आर ',' ई ',' ए ',' एम ',' \ n ' , 'एच', '\ x89', '\ xa4', 'डब्ल्यू', '\ xd9', 'आर', 'टी', '\ xc9', '\ x11', '\ xfd', '\ x82 ',' \ xfb ',' \ x0f ',' \ xf5 ',' \ xd8 ',' \ n ',' \ x8f ',' \ x8a ',' \ xda ',' \ x97 ',' जी ','! ',' \ x04 ',' \ X06 ',' \ X03 ']

एक पीडीएफ मैं अपने डेस्कटॉप पर हैं तो आप (यह एक आईसी डेटापत्रक LTC1450)

पर

"आरबी" (बाइनरी पढ़ें) का उपयोग करना:

च = खुला ("14500lf.pdf", "rb")
डेटा = सूची (f.read())
प्रिंट डेटा
[ '%', 'पी', 'डी', 'एफ', '-', '1', '।', '5', '\ r', '%', '\ xe2', '\ xe3', '\ xcf', '\ xd3 ',' \ r ',' \ n ',' 1 ',' ',' 0 ',' ',' o ',' b ',' j ',' < ',' < ','/' , 'सी', 'ओ', 'एन', 'टी', 'ई', 'एन', 'टी', 'एस', '', '3', '', '0', '', ' 'आर', '/', 'टी', 'वाई', 'पी', 'ई', '/', 'पी', 'ए', 'जी', 'ई', '/', 'पी' ',' ए ',' आर ',' ई ',' एन ',' टी ',' ',' 8 ',' 7 ',' ',' 0 ',' ',' आर ','/' , 'टी', 'एच', 'यू', 'एम', 'बी', '', '7', '1', '', '0', '', 'आर', '/' , 'आर', 'ओ', 'टी', 'ए ',' टी ',' ई ',' ',' 0 ','/',' एम ',' ई ',' डी ',' आई ',' ए ',' बी ',' ओ ',' एक्स ',' [',' 0 ',' ',' 0 ',' ',' 6 ',' 1 ',' 2 ',' ',' 7 ',' 9 ',' 2 ','] ','/',' सी ',' आर ',' ओ ',' पी ',' बी ',' ओ ',' एक्स ',' [',' 0 ',' ',' 0 ',' ',' 6 ',' 1 ',' 2 ',' ',' 7 ',' 9 ',' 2 ','] ','/',' आर ',' ई ',' एस ',' ओ ',' यू ',' आर ',' सी ',' ई ',' एस ',' ',' 2 ',' ',' 0 ',' ',' आर ','> ','> ',' \ r ',' e ',

.... कुछ हज़ार लाइनों को स्निप करें ...

'9', '1', '', '0', '', 'आर', '/', 'आई', 'डी', '[', '<', 'डी', 'डी', '3', 'डी', '2', '8', '5', 'ई', '1', 'डी', '9', '0', '4', ' 6 ',' ई ',' 1 ',' एफ ',' 6 ',' ई ',' 7 ',' 0 ',' 8 ',' बी ',' डी ',' 8 ',' ई ' , '4', 'एफ', '9', 'बी', '1', '3', '>', '<', '4', '3', '8', 'a', ' 7 ',' 7 ',' 2 ',' 3 ',' f ',' b ',' 2 ',' 9 ',' e ',' 7 ',' 4 ',' 6 ',' a ' , '4', 'डी', '4', '1', '6', 'ए', 'एफ', '7', '6', '2', 'डी', '8', ' 0 ',' 9 ',' 5 ','> ','] ','> ','> ',' \ r ',' \ n ',' s ',' t ',' a ',' आर ',' टी ',' एक्स ',' आर ',' ई ',' एफ ',' आर ',' \ n ',' 2 ',' 9 ',' 0 ',' 2 ',' 6 ',' 9 ',' \ r ',' \ n ','% ','% ',' ई ',' ओ ',' एफ ',' \ r ',' \ n ']

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