Выполнить через несколько дат Python - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь вернуться к 29 марта 2018 года и пробегать каждый день до сегодняшнего дня.Также сохраняйте каждый день отдельно в .csv и меняйте имя BOOKS_thedate.csv.Я хотел применить дату и время другим способом, и любая помощь в понимании этого была бы очень признательна.

import csv
import requests
import datetime
from pprint import pprint

outfile = open("BOOKS.csv","w",newline='')
writer = csv.writer(outfile)
writer.writerow(["book_ids","status","away_team_id","away_rot","ml_away","spread_away","spread_away_line","home_team_id",
                 "home_rot","ml_home","spread_home","spread_home_line","over","under","total","type_odds","insert","time",
                 "one_tm_id","one_tm","one_team","two_tm_id","two_tm","two_team"])

req2 = requests.get('https://api-prod.sprtactn.co/web/v1/scoreboard/mlb?bookIds=21,1,55&date=' + datetime.datetime.now().strftime('%Y%m%d') + '')
odd = req2.json()['games']

for info in odd:
    time = info['start_time']
    status = info['status']
    away_rot = info['away_rotation_number']
    home_rot = info['home_rotation_number']
    away_team_id = info['away_team_id']
    home_team_id = info['home_team_id']
    teams = info['teams']
    vegas = info['odds']
    one_team = teams[0]['full_name']
    one_tm = teams[0]['abbr']
    one_tm_id = teams[0]['id']
    two_team = teams[1]['full_name']
    two_tm = teams[1]['abbr']
    two_tm_id = teams[1]['id']
    for odds in vegas:
        ml_away = odds['ml_away']
        ml_home = odds['ml_home']
        type_odds = odds['type']
        insert = odds['inserted']
        book_ids = odds['book_id']
        spread_away = odds['spread_away']
        spread_home = odds['spread_home']
        spread_away_line = odds['spread_away_line']
        spread_home_line = odds['spread_home_line']
        over = odds['over']
        under = odds['under']
        total = odds['total']


        print(book_ids, status, away_team_id, away_rot, ml_away, spread_away, spread_away_line, 
              home_team_id, home_rot, ml_home, spread_home, spread_home_line,
              over, under, total, type_odds, insert, time, one_tm_id, one_tm, one_team, two_tm_id, two_tm, two_team)

        writer.writerow([book_ids, status, away_team_id, away_rot, ml_away, spread_away, spread_away_line, 
              home_team_id, home_rot, ml_home, spread_home, spread_home_line,
              over, under, total, type_odds, insert, time, one_tm_id, one_tm, one_team, two_tm_id, two_tm, two_team])

1 Ответ

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

Простой способ сделать это - использовать библиотеку маятника (https://pendulum.eustace.io/docs/).

. Рассчитать start и end раз, а затем period на основе этих значений. Выполнитьцикл for, который предоставляет один элемент datetime для каждого интервала в пределах period, в данном случае для каждого дня.

В цикле вы можете отформатировать datetime, чтобы предоставить строку для использования в URL-адресе и для именованияCSV, как показано.

>>> import pendulum
>>> start = pendulum.datetime(2018, 3, 29)
>>> end = pendulum.today()
>>> period = pendulum.period(start, end)
>>> for dt in period.range('days'):
...     dt.format('%Y%m%d')
...     break
... 
'20180329'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...