وصدير هو تنسيق ملف ثنائي تستخدم من قبل حفنة من وكالات حكومة الولايات المتحدة لنشر مجموعات البيانات على & nbsp؛ كل ذلك جعل الكثير من المعنى إذا كنت تحاول قراءة ملفات البيانات على الحاسوب IBM الخاصة بك مرة أخرى في عام 1988.
كيف يمكنني استخدامه؟
دعونا نجعل هذا قصيرة وحلوة:
صدير استيراد
مع xport.XportReader (xport_file) قارئ:
وnbsp؛ ل التوالي في قارئ:
على & nbsp؛ صف وطباعة
وكل صف يكون ديكت مع مفتاح لكل حقل في مجموعة البيانات. سوف يكون إما القيم سلسلة يونيكود، تعويم أو عدد صحيح، وهذا يتوقف على نوع المحدد في ملف لهذا الحقل.
الحصول على معلومات الملف
مرة واحدة لديك كائن XportReader، هناك عدد قليل من الخصائص والأساليب التي سوف اعطيكم تفاصيل حول الملف:
- reader.file: الكامنة كائن ملف بايثون (انظر القسم التالي).
- reader.record_start: موقف (بالبايت) في ملف حيث تبدأ سجلات (انظر القسم التالي).
على & nbsp؛ reader.record_length: طول (بالبايت) من كل سجل (انظر القسم التالي).
- reader.record_count (): عدد السجلات في الملف. (تحذير: هذا سوف تسعى إلى نهاية الملف لتحديد طول الملف.)
- reader.file_info وreader.member_info: dicts تحتوي على معلومات حول متى وكيف تم إنشاء مجموعة البيانات.
- reader.fields: قائمة الحقول في مجموعة البيانات. كل حقل هو ديكت تحتوي على المفاتيح التالية، نسخ من المواصفات:
على & nbsp؛ البنية NAMESTR {
على & nbsp؛ ntype قصيرة. / * VARIABLE نوع العقار: 1 = NUMERIC، 2 = CHAR * /
على & nbsp؛ nhfun قصيرة. / * تجزئة NNAME (دائما 0) * /
ونبسب؛ * field_length قصيرة. / * طول المتغير في الرصد * /
على & nbsp؛ nvar0 قصيرة. / * VARNUM * /
ونبسب؛ * اسم char8. / * اسم متغير * /
ونبسب؛ * التسمية char40. / * LABEL متغير * /
على & nbsp؛ char8 nform. / * اسم FORMAT * /
على & nbsp؛ قصيرة اتحاد كرة القدم الأميركي. / * طول تنسيق حقل OR 0 * /
ونبسب؛ * num_decimals قصيرة. / * رقم شكل العشرية * /
على & nbsp؛ nfj قصيرة. / * 0 = المبررات اليسار، 1 = RIGHT فقط * /
على & nbsp؛ شار nfill [2]. / * (غير مستخدمة، FOR ALIGNMENT والمستقبل) * /
على & nbsp؛ char8 niform. / * اسم INPUT FORMAT * /
على & nbsp؛ باختصار nifl. / * المعلومات حول عملية الطول ATTRIBUTE * /
على & nbsp؛ nifd قصيرة. / * رقم المعلومات حول عملية الكسور العشرية * /
على & nbsp؛ المنظمات غير الربحية الطويل؛ / * الموقف ذات قيمة في الرصد * /
على & nbsp؛ شار بقية [52]. / * الحقول الباقية ليست ذات صلة * /
على & nbsp؛}؛
على & nbsp؛ ملاحظة: لقد تم إعادة تسمية العناصر مع النجوم من الأسماء القصيرة الواردة في المواصفات. لأن هذا هو الإفراج ألفا، قد يمكن إعادة تسمية العناصر الأخرى في المستقبل، إذا كان شخص ما يقول لي انهم ل.
وصول عشوائي لسجلات
إذا كنت ترغب في الوصول إلى سجلات محددة، بدلا من بالتكرار، يمكنك استخدام وظائف الوصول إلى الملفات القياسية بايثون وقليل من الرياضيات.
الحصول على سجل 1000:
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 ()
(في هذا المثال الأخير، لاحظ أننا لا يمكن أن تطلب من نهاية الملف، لأنه قد يكون هناك بايت الحشو. الجيدة القديمة ذات العرض الثابت تنسيقات الملفات الثنائية).
الرجاء إصلاح / سرقة هذا الرمز!
لقد كتبت هذا الأمر لأنه يبدو مثير للسخرية أنه لا توجد طريقة سهلة لقراءة شكل بيانات حكومية قياسية في معظم لغات البرمجة. ربما أكون قد حصلت على أشياء خاطئة. إذا وجدت ملف لا فك بربري، إرسال طلب سحب. المواصفات الرسمية هي هنا. انها واضحة من المستغرب لتنسيق ملف ثنائي من 80s.
يرجى كما لا تتردد في استخدام هذا الرمز كقاعدة لكتابة مكتبتك الخاصة للغة البرمجة المفضلة لديك. يجب أن تكون بيانات حكومية يمكن الوصول إليها، الرجل
المتطلبات:.
بيثون
لم يتم العثور على التعليقات