Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 9, 2017 17:09:48

daliyovowi
Зарегистрирован: 2017-02-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

Накидал несколько строк, которые позволяют получить данные по акции с Яху Финанс. В файле
1.txt записана акция, например AAPL ( это Эппл, который яблоко и Стив). При исполнении, код берет строку из него и записывает эту акцию вместе с названием в файл csv.

Вопрос знатокам. Если прописать в файле несколько акций в столбик, например:

AAPL
F
GM

, то как можно сделать, чтобы скачивались все данные за эти акции друг за дружку. Полагаю с помощью while, но увы, моих скудных знаний не хватает.

 from pandas_datareader import data
input = open('C:/Users/1/Downloads/1.txt', 'r')
s = input.read()
r = data.DataReader(s, 'yahoo', '2010-01-01')
r.to_csv('C:/Users/1/Downloads/'+s+'_data.csv')

Отредактировано daliyovowi (Фев. 9, 2017 17:11:17)

Офлайн

#2 Фев. 9, 2017 17:47:35

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

Ну да - с помощью while и используя команду
with:

 with open('C:/Users/1/Downloads/1.txt', 'r') as inputd:
     # Зачем вообще тут нужно было input??
     finish = ""
     # input - системная команда для обработки текста написанного пользователем!
     a = inputd.readlines()
     for c in range(0, len(a)):
        finish += a[c]
в finishn будет то что тебе надо

повысь репутацию плз!

Отредактировано python335 (Фев. 9, 2017 17:57:19)

Офлайн

#3 Фев. 9, 2017 20:48:27

daliyovowi
Зарегистрирован: 2017-02-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

Напиши пожалуйста как должен выглядеть код целиком. А то я пока далек и написал ерунду.

 from pandas_datareader import data
with open('C:/Users/1/Downloads/1.txt', 'r') as inputd:
    s = data.DataReader(s, 'yahoo', '1900-01-01')
    a = inputd.readlines()
    for c in range(0, len(a)):
        s += a[c]
r.to_csv('C:/Users/II/Downloads/'+s+'_data.csv')

И что если на строке, в файле 1.txt находится акция которой не существует, то есть строка записана неверно. Можно ли как то добавить пропуск такой строки, чтобы не вылетела ошибка? Спасибо.

Отредактировано daliyovowi (Фев. 10, 2017 06:38:56)

Офлайн

#4 Фев. 9, 2017 20:52:14

daliyovowi
Зарегистрирован: 2017-02-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

python335
Ну да - с помощью while и используя командуwith:

Офлайн

#5 Фев. 9, 2017 23:36:07

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

python335
finish = “”
# input - системная команда для обработки текста написанного пользователем!
a = inputd.readlines()
for c in range(0, len(a)):
finish += a
не надо писать на Python как на C

daliyovowi
например вот так
 from pandas_datareader import data
with open('C:/Users/1/Downloads/1.txt') as f:
    for value in f:
        # rstrip() здесь нужен что бы убрать символ перевода строки
        r = data.DataReader(value.rstrip(), 'yahoo', '2010-01-01')
        r.to_csv('C:/Users/1/Downloads/{}_data.csv'.format(value))



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Фев. 9, 2017 23:36:41)

Офлайн

#6 Фев. 10, 2017 05:00:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как создать цикл для нескольких строк кода

daliyovowi
Полагаю с помощью while, но увы, моих скудных знаний не хватает.
В большинстве случаев вам должно хватать уже написанных за вас while в библиотеке.

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

 import pandas as pd
frame = pd.read_csv("a.txt")

pandas может прочитать вам данные почти для всех мыслимых ситуаций.

Указывать абсолютный путь файла плохой тон. трудно переносить программу.

Если у вас вызывает трудности while то думаю pandas вам рановато использовать.


daliyovowi
В файле
1.txt записана акция, например AAPL
Вообще подход неправильный. Если вы сами пишете данные, то нет причин писать их в csv формате, а потом мучаться с чтением. Пишите при помощи pickle, json, yaml Тогда и запись и чтение будут в одну две строчки.



Отредактировано doza_and (Фев. 10, 2017 05:05:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version