2015-06-16 4 views
3

Я новичок в python и имею проблемы с использованием excel manpulation в python.Python: как обрабатывать данные Excel из сети без сохранения файла

Итак, вот моя ситуация: я использую запросы на получение файла .xls с веб-сервера. После этого я использую xlrd для сохранения содержимого в файле excel. Меня интересует только одно значение этого файла, и есть тысячи файлов, которые извлекаются с разных адресов URL.

Я хочу знать, как я могу обрабатывать содержимое, которое я получаю от запроса каким-то другим способом, а не создавать новый файл.

Кроме того, я включил свой код в мои комментарии о том, как его улучшить. Кроме того, он не работает, так как я пытаюсь сохранить новый контент в уже созданном файле excel (но я не мог понять, как удалить содержимое этого файла для работы моего кода (даже если он неэффективен)) ,

import requests 
import xlrd 
d={} 
for year in string_of_years: 
    for month in string_of_months: 
     dls=" http://.../name_year_month.xls" 
     resp = requests.get(dls) 
     output = open('temp.xls', 'wb') 
     output.write(resp.content) 
     output.close() 
     workbook = xlrd.open_workbook('temp.xls') 
     worksheet = workbook.sheet_by_name(mysheet_name) 
     num_rows = worksheet.nrows 
     for k in range(num_rows): 
      if condition I'm looking for: 
       w={key_year_month:worksheet.cell_value(k,0)} 
       dic.update(w) 
       break 

ответ

1

xlrd.open_workbook может принять строку для файла данных вместо имени файла. Ваш код может передавать содержимое XLS, а не создавать файл и передавать его имя.

Попробуйте это:

# UNTESTED 
    resp = requests.get(dls) 
    workbook = xlrd.open_workbook(file_contents=resp.content) 

Ссылка: xlrd.open_workbook documentation

0

Сохранить его, а затем удалить файл легко на каждом цикле после работы с операционной системой.

import os 
#Your Stuff here 
os.remove(#path to temp_file)