【问题标题】:Run through multiple dates Python运行多个日期 Python
【发布时间】:2018-05-25 02:34:03
【问题描述】:

我正试图回到 2018 年 3 月 29 日,每天都跑到今天。还将每天单独保存到 .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])

【问题讨论】:

    标签: python csv datetime


    【解决方案1】:

    一个简单的方法是使用 Pendulum 库 (https://pendulum.eustace.io/docs/)。

    计算startend 时间,然后根据这些计算period。执行一个 for 循环,为 period 内的每个时间间隔提供一个日期时间项,在本例中为每一天。

    在循环中,您可以设置日期时间的格式,以提供用于 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'
    

    【讨论】:

    • 你用什么来打印这样的日期。我做了一个字符串 the_date = dt 它给了我2018-03-29T00:00:00+00:00
    • 以您所做的方式打印日期会使pendulum 以默认格式打印dt。如果你想格式化然后使用dt.format(<format>)。例如,上面代码中的print(dt.format('%Y%m%d')) 会产生20180329(即,没有撇号)。
    • >>> 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 '%2018%0%4' 这是我一步步关注后收到的。
    • 抱歉!在版本 2 中,格式功能发生了变化,我使用的是版本 1。dt.format('YYYYMMDD') 给出 '20180329'。
    • 就是这样!我也在使用小写的 m 和 d 来打印当天的内容。感谢比尔的帮助!现在我将在 URL 中传递 period str 并将 the_date str 放入 csv 中,对吗?我是否必须添加 outfile.close() 才能关闭并移至下一个?
    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2015-02-01
    • 2017-03-23
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多