जैसा कि @ एस.लॉट कहते हैं, आपको अपनी फाइलें 'आरबी' मोड में खोलनी चाहिए, न कि 'आरयू' मोड में। हालाँकि यह आपकी वर्तमान समस्या का कारण नहीं हो सकता है। जहां तक मुझे पता है, 'आरयू' मोड का उपयोग करने से आपको गड़बड़ होगी यदि \r
डेटा में एम्बेडेड हैं , लेकिन किसी अन्य नाटक का कारण नहीं है। मैं यह भी नोट करता हूं कि आपके पास कई फाइलें हैं (सभी 'rU' के साथ खोली गई हैं?) लेकिन केवल एक समस्या पैदा कर रही है।
यदि csv मॉड्यूल कहता है कि आपके पास एक "NULL" (मूर्खतापूर्ण संदेश, आपकी फाइल में "NUL") बाइट होना चाहिए, तो आपको यह जांचने की आवश्यकता है कि आपकी फ़ाइल में क्या है। मेरा सुझाव है कि आप ऐसा करते हैं, भले ही 'आरबी' का उपयोग करने से समस्या दूर हो जाए।
repr()
आपके डिबगिंग मित्र हैं (या बनना चाहते हैं)। यह एक प्लेटफ़ॉर्म इंडिपेंडेंट फ़ैशन में, जो आपको मिला है, उसे स्पष्ट रूप से दिखाएगा (जो मददगार है जो इस बात से अनजान है कि क्या od
है या क्या करता है)। यह करो:
print repr(open('my.csv', 'rb').read(200)) # dump 1st 200 bytes of file
और ध्यान से कॉपी (पेस्ट) न करें, परिणाम आपके प्रश्न के संपादन में (टिप्पणी में नहीं)।
यह भी ध्यान दें कि यदि फाइल वास्तव में डोडी है जैसे फ़ाइल के शुरू होने से उचित दूरी के भीतर no \ r या \ n, तो द्वारा बताई गई लाइन नंबर reader.line_num
होगी (अनहेल्दी रूप से) 1. पता लगाएं कि पहले \x00
(यदि कोई है)
data = open('my.csv', 'rb').read()
print data.find('\x00')
और सुनिश्चित करें कि आप कम से कम कि कई बाइट्स repr या od के साथ डंप करें।
क्या data.count('\x00')
बताता है? यदि कई हैं, तो आप कुछ ऐसा करना चाह सकते हैं
for i, c in enumerate(data):
if c == '\x00':
print i, repr(data[i-30:i]) + ' *NUL* ' + repr(data[i+1:i+31])
ताकि आप संदर्भ में NUL बाइट्स देख सकें।
यदि आप \x00
आउटपुट में (या \0
अपने od -c
आउटपुट में) देख सकते हैं , तो आपके पास निश्चित रूप से फाइल में एनयूएल बाइट (एस) है, और आपको ऐसा कुछ करने की आवश्यकता होगी:
fi = open('my.csv', 'rb')
data = fi.read()
fi.close()
fo = open('mynew.csv', 'wb')
fo.write(data.replace('\x00', ''))
fo.close()
वैसे, क्या आपने पाठ संपादक के साथ फ़ाइल (अंतिम कुछ पंक्तियों सहित) को देखा है? क्या यह वास्तव में अन्य (कोई "NULL बाइट" अपवाद) फ़ाइलों की तरह एक उचित CSV फ़ाइल जैसा दिखता है?
od -c
की तरह कहते हैं कि पहली पंक्ति दिखता है?