Python Loop Понимание - PullRequest
       23

Python Loop Понимание

0 голосов
/ 21 мая 2018

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

  • Есть ли цикл, который будет делать это для меня без необходимости создавать новую строку переменных для каждого прогона?
  • , и может ли этот цикл создать текстовый файл, который отличаетсяназвание?(например: Txtfile1.txt, Txtfile2.txt ...)

Пример кода прилагается ниже:

 R = requests.get("https://api.website.com/v1/....")
 data = R.json()

for x in data:
       ticker = x['symbol']
       cost = x['price_usd']

print (ticker + "\t:" + cost)
with open('Marketcap.txt', 'w') as outfile:
    json.dump(data, outfile, indent=2)

time.sleep(3600)


R2 = requests.get("https://api.website.com/v1/....")
data2 = R2.json()

for y in data2:

        ticker2 = y['symbol']
        cost2 = y['price_usd']

print(ticker2  +":\t" + cost2)

with open('Marketcap2.txt', 'w') as outfile2:
    json.dump(data2, outfile2, indent=2)

time.sleep(3600)

Спасибо.

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете просто заключить все, что вы повторяете в цикле for (следовательно, вы получите вложенный цикл for)

Если у вас есть заданное количество раз, когда вы хотите запустить ваши данныеИзвлекая программу, скажем, 12, затем используйте это:

r = requests.get("https://api.website.com/v1/....")
data = r.json()

for i in range(12):
    for x in data:

        ticker = x['symbol']
        cost = x['price_usd']

        print(ticker + ":\t", cost)
        # define a new name for our variable:
        name = 'Marketcap{}.txt'.format(i)

        with open(name, 'w') as outfile:
            json.dump(data, outfile, indent=2)

    time.sleep(3600)

Если вы хотите использовать ее «навсегда», есть встроенная библиотека под названием itertools, которая позволит вам использовать forфункция неограниченно для приращения:

from itertools import count

for i in count(0):
    for x in data:

        ticker = x['symbol']
        cost = x['price_usd']

        print(ticker  + ":\t", cost)
        name = 'Marketcap{}.txt'.format(i)

        with open(name, 'w') as outfile:
            json.dump(data, outfile, indent=2)

    time.sleep(3600)
...