التفوق ملف البيانات

منذ وقت ليس ببعيد ، كانت المهمة التي أمامي هي تحليل عدد ملفات Excel التي تم إنشاؤها لشهر معين من العام. لن أخوض في التفاصيل ، سأقول بإيجاز: لتقييم عمل موظفي إحدى الشركات. كان هناك حوالي ألف ملف وكان جوهر المهمة هو وضع جدول زمني مفهوم في شكل رسم بياني لرئيس الشركة ، في أي شهر من السنة وعدد الملفات التي تم إجراؤها (كانت هذه ملاحظات الشحنة).
اعتقدت أنه سيكون من الجيد استخدام البيانات الأولية للملف لهذا الغرض ، أي تشغيل الملفات الموجودة في حلقة ، واستخراج تواريخ إنشاء الملف وتحميل كل شيء كقائمة في Matplotlib لإنشاء رسم بياني.


لم أعمل مطلقًا مع البيانات الوصفية قبل هذا الوقت ، على الرغم من أن الحاجة قد نشأت بشكل دوري ، لكن تم الاستغناء عنها بوسائل أخرى ، لذلك لم تكن هناك تجربة. وفي صباح اليوم التالي ، بعد أن صنع السندويشات وجلب فنجانًا من القهوة ، قام بتطبيق فكرته.


"المضي قدما" بالطبع يقال بقوة. بادئ ذي بدء ، من الطبيعي البحث في الإنترنت للحصول على معلومات حول البيانات الوصفية ، وحول العمل معهم في Python ، والمشاريع المشابهة ، إلخ. تقريبًا صادفت وحدة oletools لـ Python ، وهي موجودة على GitHub ، وفي PyPi ، هناك وثائق جيدة. لقد درستها لبضع ساعات. oletools المثبتة. كل شيء يعمل ، تم استخراج البيانات الوصفية بشكل صحيح. لكن. في المحطة. كنت بحاجة إلى برنامج نصي مع حلقة. أينما كنت على الإنترنت لم أبحث عن كيفية "تكوين صداقات" من oletools و IDLE ، وصلت إلى 15 (!) صفحة في محرك بحث. المعلومات صفر.


أنا متأكد ، بلا شك ، أن هذه وحدة رائعة ، ربما قوية للغاية ، لكنها لم تنجح بالنسبة لي. في محاولة أخرى (بحلول المساء) لإجبار البرنامج النصي على استخراج بيانات تعريف الملف بطريقة أو بأخرى ، تم رفع استثناء آخر. وهنا لاحظت أن oletools تقوم بتحميل وحدة olefile للعمل. لقد كتبت في محرك بحث وما أدهشني عندما اكتشفت أن هذا هو ما كنت أبحث عنه طوال اليوم. وثائق واضحة جدا. قرأته في نصف ساعة وعلى الفور أثناء القراءة ، رسمت نصًا.


  olefile  : pip3 install --user olefile 

وإليك النص نفسه ، الذي يستخرج البيانات الوصفية من ملف Excel (كنت بحاجة فقط إلى قيمة meta.last_saved_time):


 import olefile File_Ole='File.xls' assert olefile.isOleFile(File_Ole) #   OLE  ole = olefile.OleFileIO(File_Ole) meta = ole.get_metadata() #   print('  : '+str(meta.create_time)) #     print('  : '+str(meta.last_saved_time))#     meta.dump() #      ole.close() #   

لن أعطي جميع الشفرات للبرنامج النصي الخاص بي هنا ، وكانت مهمتي في هذا المنشور هي التحدث عن استخراج بيانات التعريف البسيطة والسريعة من ملف Excel باستخدام الوحدة النمطية olefile. بالمناسبة ، تستخرج هذه الوحدة البيانات الوصفية من مجموعة متنوعة من تنسيقات الملفات ، ويمكن العثور على مزيد من التفاصيل في الوثائق .


في الإنصاف ، تجدر الإشارة أيضًا إلى أن olefile يستخرج البيانات الوصفية فقط من ملفات Excel 1997-2003 ، أي مع التمديد .xls. بالنسبة إلى ملفات .xlsx ، كتبت محولًا باستخدام وحدة pyexcel.


حسنًا ، هذا كل شيء. شكرًا لك على اهتمامك ، آمل أن يساعد منصبي شخصًا ما في توفير الوقت والأعصاب والأهم من ذلك الحفاظ على مزاج جيد.

Source: https://habr.com/ru/post/ar439358/


All Articles