2012-03-01 4 views
9

न्यूबी प्रश्न में एसयूबी से परे लाइनें पढ़ना। पायथन 2.7.2 में, मुझे टेक्स्ट फ़ाइलों को पढ़ने में समस्या है जो गलती से कुछ नियंत्रण वर्णों को प्रतीत होता है। विशेष रूप से, पाशपायथन

for line in f

जैसे ही यह SUB वर्ण (ascii हेक्स कोड 1 क) रखने वाली पंक्ति भर आता है किसी चेतावनी या त्रुटि के बिना बंद हो जाएगा। f.readlines() का उपयोग करते समय परिणाम वही है। अनिवार्य रूप से, जहां तक ​​पाइथन का संबंध है, फ़ाइल जल्द ही समाप्त हो जाती है जैसे ही पहले SUB वर्ण का सामना किया जाता है, और line असाइन किया गया अंतिम मान उस वर्ण की रेखा है।

क्या ऐसा कोई चरित्र और/या किसी का सामना करते समय चेतावनी जारी करने का कोई तरीका है?

उत्तर

8

विंडोज सिस्टम 0x1a पर समाप्ति की फ़ाइल चरित्र है। आप इसे पिछले पाने के लिए क्रम में द्विआधारी मोड में फ़ाइल खोलने के लिए की आवश्यकता होगी:

f = open(filename, 'rb') 

नकारात्मक पक्ष यह है कि आप लाइन उन्मुख प्रकृति खोने के लिए और लाइनों खुद को विभाजित करना होगा:

lines = f.read().split('\r\n') # assuming Windows line endings 
+1

, 'लाइन = f.read() का उपयोग करें। विभाजन (' \ n ') ' –

6

द्विआधारी मोड में फ़ाइल खोलने का प्रयास करें:

f = open(filename, 'rb') 
+3

आपको एक हजार बार धन्यवाद। लिनक्स लाइन समाप्ति के लिए –