.
XPort বাইনারি ফাইল তথ্য সেট প্রকাশ জন্য মার্কিন যুক্তরাষ্ট্র সরকার সংস্থার একটি গুচ্ছ দ্বারা ব্যবহৃত বিন্যাস & nbsp; যদি আপনি ফিরে 1988 সালে আইবিএম মেইনফ্রেম আপনার ডাটা ফাইল পড়ার চেষ্টা করা হয়েছে কিনা এটা ধারণা অনেক তৈরি.
আমি এটা কিভাবে ব্যবহার করবেন?
এর এই ছোট এবং মিষ্টি করা যাক:
আমদানি XPort
পাঠক হিসাবে xport.XportReader (xport_file) সঙ্গে:
& Nbsp; পাঠক সারির:
& Nbsp; মুদ্রণ সারি
প্রতিটি সারি ডেটা সেটটি প্রতিটি ক্ষেত্রে এর জন্য একটি কী সঙ্গে একটি অভি হতে হবে. মান যে ক্ষেত্রের জন্য ফাইলের মধ্যে উল্লিখিত ধরনের উপর নির্ভর করে, একটি ইউনিকোড স্ট্রিং, একটি float বা কোন int হয় হতে হবে.
পথ ফাইল তথ্য
আপনি যদি একটি XportReader বস্তুর আছে, আপনি ফাইল বিবরণ দিতে হবে যে কয়েক বৈশিষ্ট্য এবং পদ্ধতি আছে:
- Reader.file: অন্তর্নিহিত পাইথন ফাইল বস্তু (পরের অধ্যায় দেখুন).
- Reader.record_start: রেকর্ড শুরু যেখানে ফাইল (বাইট) অবস্থান (পরের অধ্যায় দেখুন).
& Nbsp; reader.record_length: (বাইট) দৈর্ঘ্য প্রতিটি রেকর্ড (পরের অধ্যায় দেখুন).
- Reader.record_count (): ফাইল রেকর্ড সংখ্যা. (সতর্কতা: এই ফাইলের দৈর্ঘ্য নির্ধারণ করা ফাইলের শেষে চাইতে হবে.)
- Reader.file_info এবং reader.member_info: ডেটা সেটটি তৈরি করা হয়েছে কখন এবং কিভাবে সম্পর্কে তথ্য ধারণকারী dicts.
- Reader.fields: ডেটা সেটটি ক্ষেত্র তালিকা. প্রতিটি ক্ষেত্রের বৈশিষ্ট থেকে কপি নিম্নলিখিত কি ধারণকারী একটি অভি হয়:
& Nbsp; struct, NAMESTR {
& Nbsp; সংক্ষিপ্ত ntype; / * পরিবর্তনশীল টাইপ: = 1 সংখ্যা 2 = গৃহস্থালি * /
& Nbsp; সংক্ষিপ্ত nhfun; / * NNAME (সবসময় 0) হ্যাশ * /
& Nbsp; * ছোট field_length; / * পর্যবেক্ষণ পরিবর্তনশীল দৈর্ঘ্য * /
& Nbsp; সংক্ষিপ্ত nvar0; / * VARNUM * /
& Nbsp; * char8 নাম; / * ভেরিয়েবলের নাম * /
& Nbsp; * char40 লেবেল; / * পরিবর্তনশীল এর লেবেল * /
& Nbsp; char8 nform; / * বিন্যাসের নাম * /
& Nbsp; সংক্ষিপ্ত NFL; / * ফরম্যাট ক্ষেত্রে দৈর্ঘ্য বা 0 * /
& Nbsp; * ছোট num_decimals; দশমিক / * ফরম্যাটকে সংখ্যা * /
& Nbsp; সংক্ষিপ্ত nfj; / * 0 = বাম আত্মপক্ষ সমর্থন, 1 = অধিকার শুধু * /
& Nbsp; nfill গৃহস্থালি [2]; / * (অব্যবহৃত, প্রান্তিককরণ এবং ভবিষ্যতের জন্য) * /
& Nbsp; char8 niform; / * ইনপুট ফরম্যাট নাম * /
& Nbsp; সংক্ষিপ্ত nifl; / * Informat দৈর্ঘ্য ATTRIBUTE * /
& Nbsp; সংক্ষিপ্ত nifd; দশমিক / * Informat সংখ্যা * /
& Nbsp; দীর্ঘ NPOs; / * পর্যবেক্ষণ মানের অবস্থান * /
& Nbsp; গৃহস্থালির কাজ বাকি [52]; / * অবশিষ্ট ক্ষেত্র অপ্রাসঙ্গিক * /
& Nbsp;};
মনে রাখবেন: বড় সঙ্গে আইটেম বৈশিষ্ট দেওয়া সংক্ষিপ্ত নাম থেকে নাম পরিবর্তন করা হয়েছে. এই একটি আলফা রিলিজ যেহেতু কেউ তারা কি আমাকে বলে, যদি অন্যান্য আইটেম, ভবিষ্যতে নাম পরিবর্তন করা হতে পারে.
রেকর্ড র্যান্ডম এক্সেস
আপনি যদি এর পরিবর্তে iterating এর, নির্দিষ্ট রেকর্ড অ্যাক্সেস করতে চান, তাহলে আপনি পাইথন এর মান ফাইল এক্সেস ফাংশন এবং একটু গণিত ব্যবহার করতে পারেন.
1000th রেকর্ড পান:
reader.file.seek (reader.record_start + + reader.record_length * 1000, 0)
reader.next ()
সাম্প্রতিক এক সংগৃহীত আগে রেকর্ড পান:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
শেষ রেকর্ড পান:
reader.file.seek (reader.record_start + + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(এই শেষ উদাহরণে, প্যাডিং বাইট হতে পারে, কারণ আমরা ফাইলের শেষে থেকে চাইতে পারে না মনে রাখবেন. গুড পুরানো নির্দিষ্ট প্রস্থ বাইনারি ফাইল ফরম্যাটের.)
চুরি / এই কোড, ঠিক করুন
এটি সবচেয়ে প্রোগ্রামিং ভাষার একটি প্রমিত সরকারের তথ্য বিন্যাসে পড়া কোন সহজ উপায় আছে যে ছিল হাস্যকর লাগে, কারণ আমি এই পর্যন্ত লিখেছেন. আমি কিছু ভুল হয়ে অর্জিত হতে পারে. আপনি propery ডিকোড না যে একটি ফাইল খুঁজে, একটি পুল অনুরোধ পাঠান. সরকারী বৈশিষ্ট এখানে. এটা 80s থেকে একটি বাইনারি ফাইল ফরম্যাট জন্য আশ্চর্যজনক সহজবোধ্য.
এছাড়াও আপনি আপনার প্রিয় প্রোগ্রামিং ভাষার জন্য আপনার নিজের লাইব্রেরি লিখুন একটি বেস হিসাবে এই কোড ব্যবহার করতে দয়া করে নির্দ্বিধায়. . সরকারের তথ্য মানুষ, অ্যাক্সেসযোগ্য করা উচিত?
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না