@ এস.লোট যেমন বলেছেন, আপনার ফাইলগুলি 'আরবি' মোডে খুলতে হবে, 'আরইউ' মোডে নয়। তবে এটি আপনার বর্তমান সমস্যার কারণ হতে পারে না। যতদূর আমি জানি, 'আরইউ' মোড ব্যবহার \r
করে ডেটা এম্বেড করা থাকলে আপনাকে বিভ্রান্ত করবে , তবে অন্য কোনও নাটক তৈরির কারণ হবে না। আমি আরও লক্ষ করি যে আপনার বেশ কয়েকটি ফাইল রয়েছে (সমস্ত 'rU' দিয়ে খোলা হয়েছে) তবে সমস্যাগুলির মধ্যে কেবল একটি।
যদি সিএসভি মডিউলটি বলে যে আপনার ফাইলে একটি "নুল" (নির্বোধ বার্তা, "NUL") হওয়া উচিত, তবে আপনার ফাইলটিতে কী আছে তা পরীক্ষা করে দেখার দরকার। আমি পরামর্শ দিচ্ছি যে আপনি 'rb' ব্যবহার করে সমস্যাটি দূরে সরিয়ে দিলেও আপনি এটি করেন।
repr()
আপনার ডিবাগিং বন্ধু (বা হতে চায়)। এটি একটি প্ল্যাটফর্মের স্বতন্ত্র ফ্যাশনে (যা কী od
বা কী করছে তা অবগত নয় এমন সহায়তাকারীদের পক্ষে সহায়ক) যা আপনি পেয়েছেন তা নির্বিঘ্নে প্রদর্শন করবে । এটা কর:
print repr(open('my.csv', 'rb').read(200)) # dump 1st 200 bytes of file
এবং সাবধানতার সাথে ফলাফলটি আপনার প্রশ্নের সম্পাদনায় (কোনও মন্তব্যে নয়) অনুলিপি করুন (পুনরায় টাইপ করবেন না)।
আরও মনে রাখবেন যে ফাইলটি যদি সত্যই দুর্বল হয় যেমন ফাইলের শুরু থেকে যুক্তিসঙ্গত দূরত্বের মধ্যে কোনও \ r বা \ n না, তবে উল্লিখিত লাইন নম্বরটি reader.line_num
হবে (অপ্রয়োজনীয়ভাবে) ১. প্রথমটি \x00
কোথায় (যদি থাকে) কোথায় তা আবিষ্কার করুন
data = open('my.csv', 'rb').read()
print data.find('\x00')
এবং নিশ্চিত হয়ে নিন যে আপনি কমপক্ষে এমন অনেকগুলি বাইটকে রেপ বা ওড দিয়ে ফেলেছেন।
কি 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
আউটপুটে) দেখতে পান তবে অবশ্যই আপনার অবশ্যই ফাইলটিতে NUL বাইট রয়েছে, এবং আপনাকে এরকম কিছু করতে হবে:
fi = open('my.csv', 'rb')
data = fi.read()
fi.close()
fo = open('mynew.csv', 'wb')
fo.write(data.replace('\x00', ''))
fo.close()
যাইহোক, আপনি কোনও পাঠ্য সম্পাদক দিয়ে ফাইলটি (শেষ কয়েকটি লাইন সহ) দেখেছেন? এটি কি অন্যান্য (কোনও "NULL বাইট" ব্যতিক্রম নয়) ফাইলগুলির মতো যুক্তিসঙ্গত সিএসভি ফাইলের মতো দেখাচ্ছে?
od -c
প্রথম লাইনের মতো দেখতে কী বলে?