سؤال

أواجه مشكلة في إنشاء ملف وتصدير إلى .yaml. أنا أستخدم محرك تطبيق Google مع Python 2.5. لا تفهم Doc's Yaml ، فهذا يجعلني مرتبكًا.

ما أريده هو إنشاء ملف وحفظه. من الضروري الحصول على كيانات من النماذج.

class SaveYAML(webapp.RequestHandler):
    def post(self):
        user = db.Query(models.User)
        user = user.filter('user =', users.get_current_user())
        users = user.fetch(limit = 1)

        for user in users:
            print(user.name, user.adress, user.phone, user.city)

        self.response.headers['Content-Type'] = 'application/yaml'
        self.response.headers['Content-Disposition'] = 'filename = myYaml.yaml' 

باستخدام هذا المقتطف ، يمكنني عرضه في متصفح ، عندما أنقر في زر تم استرداد المعلومات من النماذج. ربما يكون ذلك بسبب طريقة الطباعة ، ولكنه لا ينشئ ملفًا ولكن عندما أقوم بتحميل تطبيقي على محرك تطبيق Google ، فإنه لا يعرض نفس المعلومات. يظهر فقط "الحالة 200 موافق".

هل يستطيع احد توجيهي الي الوجهة الصحيحة؟ هل يجب علي استيراد مكتبة Pyyaml؟

لقد غيرت بعض التعليمات البرمجية إلى:

print(yaml.dump(user, sys.stdout))

وكانت النتيجة هذا في متصفح:

- !!binary |
  /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
  HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
  MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAnACgDASIA
  AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
  AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
  ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
  p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
  AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
  BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
  U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
  uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2WxvX
  h8zzNxhEjgk87fmPI9R6+lbKsGUMpBBGQR3rAhKxRTyOyqglck9Mc1nX/iVdGb7JZr9qnlBMcCc7
  T3Psvqeg7elAG7rmv6f4esGu7+ZUXoq5+Zz6Cuc8I+ItS8X6pLqK/wCiaXbKYhbjkyuRnJOOw7Cs
  jXvC8epW0Ta5IdR1O7dTFDG5Eaeirj1xy3oG6dK7rQdGtvDuiQ2FuoCRLl2A+8x5J/OtFKKhtqZu
  MnPfQoajeXDeLtMtICfLG55cNj5Qp6/iVoqLQAb/AMQalqLDKoRBGf1NFceGqOpT9o+t/u6fgdNZ
  csuTt/T/ABMGTVb/AFu4NroW37H5rG5upEOB83AUHr9O/r2roI9DtfDsUt1GHmaTBmmc5kLdBz6d
  sdB246XrcIlpKgXaPNOOBz8wqtqkFxreoRWSKRp0ZJuJM43H+6PXPTPufw6DIytCk/0ttauQv2d8
  rbr3Ck8yKPQ9AP7oB7muk1m+S00We5VgVKfKQeDVe80yO3+eFAIO6gf6v6f7P8vpXP63lfsmnbnM
  c8ykoozhepIrlxk3Gi1Hd6L1ehrQinUV9lr92p0PhezNnoMAcfvJcyv9W5orWhKGFDEQU2jaR0xR
  XRCKhFRjsjOUnJuT6mALmOIyxujHMjE4478d6kXUUXIHnAZ/vH8e9FFUIY2roq8+dn03HH86wYby
  3bxFLduji3twYolxk5IyT196KKTipWv0GpNXsbNv4gtYZ/kEgjY/MpXoe5HP/wCv+ZRRTEf/2Q==
_name: !!python/unicode 'Ana Ferreira'
_parent: null
_parent_key: null
_adress: !!python/unicode 'Porto'
_phone: !!python/unicode '1234569789'
_user: *id002
None
Status: 200 OK
Cache-Control: no-cache
Content-Type: text/yaml
Content-Disposition: filename = myYaml.yaml
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0

غيرت الكود ، ولكن يتم تقديم البيانات فقط بواسطة المتصفح.

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

المحلول

لا تستخدم الطباعة والاستخدام self.response.out.write(...).

نعم ، سترغب في استيراد Yaml لإخراج Yaml ، وسوف يسهل الأمر.

جرب هذا:

import yaml

users = model.Users.all().fetch(10)
users = [{'user': {'name': user.name,
                   'address': user.address,
                   'phone': user.phone,
                   'city': user.city}}
          for user in users]

self.response.out.write(yaml.dump(users, default_flow_style=False))

يمكنك التحقق من مستندات Yaml للحصول على معلومات إضافية حول تنسيق الإخراج.

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