سؤال

أنا أبحث عن حل بسيط باستخدام بايثون لتخزين البيانات كملف ثابت، بحيث يكون كل سطر عبارة عن تمثيل سلسلة لمصفوفة يمكن تحليلها بسهولة.

أنا متأكد من أن لغة python لديها مكتبة للقيام بمثل هذه المهمة بسهولة ولكن حتى الآن يبدو أن جميع الأساليب التي وجدتها تبدو وكأنها قد تكون قذرة لجعلها تعمل وأنا متأكد من أن هناك نهجًا أفضل.لقد حاولت حتى الآن:

  • طريقة array.toFile() ولكن لم تتمكن من معرفة كيفية جعلها تعمل مع صفائف السلاسل المتداخلة، يبدو أنها موجهة نحو البيانات الصحيحة.
  • لا تحتوي القوائم والمجموعات على طريقة toFile مضمنة، لذا كان علي تحليلها وترميزها يدويًا.
  • بدا ملف CSV وكأنه نهج جيد ولكن هذا يتطلب أيضًا تحليله يدويًا، ولم يسمح لي ببساطة بإلحاق أسطر جديدة في النهاية - لذا فإن أي استدعاءات جديدة لـ CSVWriter ستحل محل بيانات الملف الموجودة.

أحاول حقًا تجنب استخدام قواعد البيانات (ربما SQLite ولكن يبدو الأمر مبالغًا فيه بعض الشيء) لأنني أحاول تطوير هذا بحيث لا يكون لدي أي متطلبات برمجية مسبقة إلى جانب Python.

هل كانت مفيدة؟

المحلول

هل يجب أن يكون الملف قابلاً للقراءة بواسطة الإنسان؟ان لم، الرف سهل الاستخدام حقًا.

نصائح أخرى

بالإضافة إلى pickle (المذكور أعلاه)، هناك json (مدمج في الإصدار 2.6، ومتاح عبر com.simplejson قبل ذلك) و marshal.وأيضاً هناك reader في نفس csv وحدة الكاتب في.

تحديث:مؤخرة.وأشار لوت في تعليق، إلى أن هناك أيضًا YAML، متاح عبر بييامل, ، من بين أمور أخرى.

أنا أبحث عن حل بسيط باستخدام بايثون لتخزين البيانات كملف ثابت، بحيث يكون كل سطر عبارة عن تمثيل سلسلة لمصفوفة يمكن تحليلها بسهولة.

هل سيتم تحليل البيانات بواسطة برامج بايثون فقط؟إذا لم يكن الأمر كذلك، فسأتجنب Pickle et al (الرف والمارشال) نظرًا لأنهما خاصان جدًا ببايثون.يتمتع كل من JSON وYAML بميزة مهمة تتمثل في توفر الموزعين بسهولة لمعظم اللغات.

يستخدم هذا الحل في SourceForge وحدات Python القياسية فقط:

وحدة y_serial.py ::كائنات مستودع بايثون مع SQLite

"التسلسل + المثابرة ::في بضعة أسطر من التعليمات البرمجية، قم بضغط كائنات Python وإضافة تعليقات توضيحية إليها في SQLite؛ثم استرجعها لاحقًا بترتيب زمني عن طريق الكلمات الرئيسية دون أي SQL.الوحدة "القياسية" الأكثر فائدة لقاعدة البيانات لتخزين البيانات بدون مخطط."

http://yserial.sourceforge.net

SQLite ليس "مبالغة" على الإطلاق - ستندهش من مدى بساطته؛بالإضافة إلى أنه يحل مشكلات ثبات البيانات الأكثر عمومية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top