2015-08-19 2 views
1

Я использую библиотеку запросов для запроса RESTapi. Я могу успешно выполнить get и получить правильный ответ с сервера. Я пытаюсь сохранить ответ из GET в файл, чтобы я мог манипулировать данными.Чтение Python Запрос на файл

Я не получаю сообщение об ошибке, но ничего не записывается в файл:

def download_file(url, cafile, user1, pass1, local_filename): 
    # NOTE the stream=True parameter 
    r = requests.get(url, 
        stream=True, 
        auth=(user1, pass1), 
        verify=cafile, 
        headers={'content-type':'application/xml'} 
        ) 
    lines = r.iter_lines() 
    first_line = next(lines) 
    for line in lines: 
     with open(local_filename, 'w')as g: 
      g.write((line)+ '/') 
    return (local_filename) 
+0

@ austin: Рассмотрите возможность удаления пуха, пока вы на нем: [Не используйте подпись, метки или приветствия] (http://stackoverflow.com/help/behavior). – Deduplicator

+0

Возможно ли, что строки являются одноэлементными массивами? Тогда ваша петля не запускается вообще –

ответ

0

Просто сохранить содержание ответа:

def download_file(url, cafile, user1, pass1, local_filename): # NOTE the stream=True 
    parameter r = requests.get(url, stream=True, auth=(user1, pass1), verify=cafile, 
      headers={'content-type':'application/xml'}) 
    with open(local_filename, 'w') as g: 
     g.write(r.text) 
    return (local_filename) 
2

Вы сохранить перезапись, открыв файл в петля, открытый за пределами цикла один раз:

with open(local_filename, 'w')cas g: 
      for line in lines: 

'w' открывает файл для написания d будет обрезать файл, чтобы вы могли получать только одну строку данных в вашем файле.
Вы можете открыть в цикле a для добавления, но имеет смысл открыть файл за пределами цикла.

Я бы также напечатал first_line и каждую строку в вашем цикле, чтобы точно проверить, что возвращается.

Смежные вопросы