سؤال

ولدي سطر الأوامر التطبيق البيانات YAML النواتج مستمر في النموذج:

- col0: datum0
  col1: datum1
  col2: datum2
- col0: datum0
  col1: datum1
  col2: datum2
...

ولا يفعل ذلك لجميع من الخلود. وأود أن كتابة السيناريو بيثون الذي يقرأ باستمرار كل من هذه السجلات.

ويبدو أن مكتبة PyYAML أفضل في التقاط خيوط محملة بالكامل وتفسير تلك بوصفها وثيقة YAML كاملة. هل هناك طريقة لوضع PyYAML إلى وضع "تدفق"؟

وأم بي الخيار الوحيد لشريحة البيانات نفسي ويطعمه شيئا فشيئا إلى PyYAML؟

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

المحلول

وهنا هو ما كنت انتهت باستخدام لأن هناك لا يبدو أن هناك أسلوب مضمنة لتحقيق ما أريد. وينبغي أن تكون هذه الوظيفة عام يكفي أنه يمكن قراءة في تيار من YAML والعودة الكائنات مستوى أعلى كما واجهت فيها.

def streamInYAML(stream):
    y = stream.readline()
    cont = 1
    while cont:
        l = stream.readline()
        if len(l) == 0:
            cont = 0
        else:
            if l.startswith(' '):
                y = y + l
            else:
                yield yaml.load(y)
                y = l

ويمكن لأي شخص أن يفعل أفضل؟

نصائح أخرى

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

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