CSV ক্ষেত্র মাপ মাধ্যমে নিয়ন্ত্রিত হয় CSV: [পাইথন 3.Docs]। ফিল্ড_সাইজ_লিমিট ( [নতুন_প্লিট] ) :
পার্সার দ্বারা অনুমোদিত বর্তমান সর্বাধিক ক্ষেত্রের আকার দেয়। যদি new_limit দেওয়া হয় তবে এটি নতুন সীমা হয়ে যায়।
এটি ডিফল্টরূপে 128 কে বা 0x20000 ( 131072 ) এ সেট করা হয়েছে , যা কোনও শালীন .csv এর জন্য পর্যাপ্ত হওয়া উচিত :
>>> import csv
>>>
>>> limit0 = csv.field_size_limit()
>>> limit0
131072
>>> "0x{0:016X}".format(limit0)
'0x0000000000020000'
যাইহোক, .csv ফাইলের সাথে ডিল করার সময় ( সঠিক উদ্ধৃতি এবং ডিলিমিটার সহ ) এই আকারের চেয়ে এক ফিল্ড দীর্ঘ (কমপক্ষে) থাকার পরে ত্রুটি পপ আপ হয়।
ত্রুটি থেকে মুক্তি পেতে, আকারের সীমাটি বাড়াতে হবে (কোনও উদ্বেগ এড়াতে সর্বোচ্চ সম্ভাব্য মান চেষ্টা করা উচিত)।
পর্দার আড়ালে (পরীক্ষা করুন [গিটহাব]: পাইথন / সিপিথন - (মাস্টার) সিপাইথন / মডিউল / _সিএসসি.সি বাস্তবায়নের বিশদ জন্য)) এই মানটি ধারণ করে এমন ভেরিয়েবল একটি সি দীর্ঘ ( [উইকিপিডিয়া]: সি ডাটা টাইপ ) যার আকার সিপিইউ আর্কিটেকচার এবং ওএস ( আই এল পি ) এর উপর নির্ভর করে পরিবর্তিত হয় । ধ্রুপদী পার্থক্য: একটি 64 বিট ওএসের জন্য ( পাইথন বিল্ড), দীর্ঘ টাইপের আকার ( বিটগুলিতে ):
এটি সেট করার চেষ্টা করার সময়, নতুন মানটি দীর্ঘ সীমানায় থাকার জন্য চেক করা হয় , এজন্য কিছু ক্ষেত্রে অন্য একটি ব্যতিক্রম পপ আপ হয় (এই ক্ষেত্রে উইনের ক্ষেত্রে সাধারণ ):
>>> import sys
>>>
>>> sys.platform, sys.maxsize
('win32', 9223372036854775807)
>>>
>>> csv.field_size_limit(sys.maxsize)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long
এই সমস্যার মধ্যে দৌড়াতে এড়াতে, একটি আর্টিফিস ব্যবহার করে (সর্বাধিক সম্ভব) সীমাটি ( লং_ম্যাক্স ) সেট করুন ( [পাইথন ৩. ডকসকে ধন্যবাদ : সিটিপস - পাইথনের জন্য একটি বিদেশী ফাংশন লাইব্রেরি )। এটি যে কোনও সিপিইউ / ওএসে পাইথন 3 এবং পাইথন 2 এ কাজ করা উচিত ।
>>> import ctypes as ct
>>>
>>> csv.field_size_limit(int(ct.c_ulong(-1).value // 2))
131072
>>> limit1 = csv.field_size_limit()
>>> limit1
2147483647
>>> "0x{0:016X}".format(limit1)
'0x000000007FFFFFFF'
64bit পাইথন একটি উপর স্নো মত অপারেটিং সিস্টেম :
>>> import sys, csv, ctypes as ct
>>>
>>> sys.platform, sys.maxsize
('linux', 9223372036854775807)
>>>
>>> csv.field_size_limit()
131072
>>>
>>> csv.field_size_limit(int(ct.c_ulong(-1).value // 2))
131072
>>> limit1 = csv.field_size_limit()
>>> limit1
9223372036854775807
>>> "0x{0:016X}".format(limit1)
'0x7FFFFFFFFFFFFFFF'
জন্য 32bit পাইথন , জিনিষ অভিন্ন আছেন: এটা আচরণের উপর সম্মুখীন হচ্ছে উইন ।
আরও তথ্যের জন্য নিম্নলিখিত সংস্থানগুলি পরীক্ষা করুন: