Python: Excel получает данные о ценах на акции в режиме реального времени. Как добавлять цены каждые 10 минут в csv?

Вот мой скрипт на питоне:

from xlrd import open_workbook
from xlrd import xldate_as_tuple

book = open_workbook('C:/Users/.......Constantquotes.xlsx')

sheet0 = book.sheet_by_index(0)  #Initializes the first row
print sheet0.row(0)              #Prints the first row
date_value = xldate_as_tuple(sheet0.cell(0,1).value,book.datemode)
print date_value                 #Prints the date cell


#  Next step: make the a list for the stock price
#  Next step: append the list to a csv

Так что я получаю цены в excel, и они обновляются каждую секунду. Я хотел бы, чтобы скрипт Python читал лист Excel каждые десять минут (я буду использовать cronjob для активации скрипта Python), а затем добавлял последнюю цену в CSV-файл, содержащий цены только для этой акции. Проблема в том, что когда я запускаю скрипт python, он выдает мне цены и дату, когда я в последний раз СОХРАНИЛ файл excel, а не ТЕКУЩУЮ цену. Я пытался установить параметры-->сохранить-->сохранить-->сохранить информацию об автовосстановлении-->1 мин, но это мне не помогло. Итак, перефразируя вопрос, как мне сделать так, чтобы каждый раз, когда xlrd читал в файл .xls (чтобы скрипт python мог вытащить текущую цену и дату), я получал текущую цену и дату, а не цену и дату когда я в последний раз сохранял файл .xlxs?

В идеале я хотел бы иметь возможность отойти от компьютера на несколько дней и вернуться к заполненному .csv

Или, возможно, есть лучшее решение для заполнения .csv?


person user2009468    schedule 25.01.2013    source источник
comment
Есть ли способ, которым Python может просто получить доступ к фиду, который предоставляет данные? Как данные попадают в Excel?   -  person steveha    schedule 25.01.2013


Ответы (2)


Я думаю, что это одна из тех задач, с которыми лучше справиться с помощью VBA. Python не может получить доступ к данным, потому что они не были сохранены — они находятся в памяти, но вы говорите python читать с диска. На мой взгляд, у вас есть один из двух разумных вариантов.

  1. Попросите макрос VBA заполнить файл csv.
  2. Пусть макрос VBA сохраняет xls через равные промежутки времени.
person Mike Vella    schedule 25.01.2013

Ну, это скорее должно быть достигнуто в Excel, а не в Python. В вашем VBA вы можете использовать следующее:

  1. В начале вашего кода VBA.

    Application.DisplayAlerts = False

  2. Когда вы хотите сохранить свою книгу.

    ThisWorkbook.Save

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

person Aziz    schedule 25.01.2013