2010-10-14 4 views
0

У меня возникли проблемы с созданием файла и экспортом в .yaml. Я использую Google App Engine с Python 2.5. Не понимайте документы Ямла, это меня смущает.Appengine create and export yaml file

Что я хочу, так это создать файл и сохранить его. Необходимо получить объекты от моделей.

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 App Engine, он не показывает ту же информацию. Он показывает только «Status 200 Ok».

Может кто-нибудь указать мне в правильном направлении? Нужно ли мне импортировать библиотеку 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 

Измененный код, но данные представлены только в браузере.

+0

Если вы заходите на панель управления App Engine и проверяете журналы, что они говорят об ошибках? –

ответ

1

Не используйте печать, используйте 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 docs для получения дополнительной информации о форматировании вывода.

+0

Привет, пришлось добавить это: self.response.headers ['Content-Type'] = 'text/yaml' self.response.headers ['Content-Disposition'] = 'filename = myYaml.yaml', потому что было печать результатов в браузере. Теперь я получаю странные символы, но должен проверить документы. Вы указали на страницу Пьямля. Я проверю это. –

+0

- пользователь: адрес: !! питона/юникод 'Rua Fernandes Tomas' пользователя: !! питона/юникод 'Ana Ferreira' телефон: !! питон/юникод '123456' города: !! питон/юникод «Porto ' –

+0

Как я могу избавиться от этого: !! python/unicode –