【问题标题】:Reading excel files in python using dynamic dates in the file and sheet name使用文件和工作表名称中的动态日期在python中读取excel文件
【发布时间】:2020-12-09 19:35:14
【问题描述】:

我有一种情况,我想每天读取一个 excel 文件,其中文件名以以下格式写入:file_name 08.20.2018 xyz.xlsx 并每天更新,日期每天都在变化。

在读取此文件时我需要做同样的事情,我需要从一个工作表中提取数据,该工作表的命名约定也随着日期每天发生变化。示例工作表名称为 sheet1-08.20.2020-data

我应该如何做到这一点?我正在使用以下代码,但它不起作用:

df = pd.read_Excel(r'file_name 08.20.2018 xyz.xlsx', sheet_name = 'sheet1-08.20.2020-data')

我如何更新这行代码,以便它每天动态地选择数据并有新的日期。这里要清楚的是,日期也将是递增的,没有间隙。

【问题讨论】:

    标签: python-3.x excel pandas date


    【解决方案1】:

    您可以使用pathlibdatetime 模块来自动化该过程:

    from pathlib import Path
    from datetime import date
    
    #assuming you have a directory of files:
    folder = Path(directory of files)
    sheetname = f"sheet1-0{date.today().month}.{date.today().day}.{date.today().year}-data"
    date_string = f"filename 0{date.today().month}.{date.today().day}.{date.today().year}.xlsx"
    xlsx_file = folder.glob(date_string)
    
    #read in data
    df = pd.read_excel(io=next(xlsx_file), sheet_name = sheetname)
    

    【讨论】:

    • 收到以下错误 NameError: name 'Pathlib' is not defined。我已经从 pathlib import Path 替换为 import pathlib。我仍然收到此错误。
    • 没关系,但现在如果我再次运行它,我在读取此行的 excel 文件时遇到停止迭代错误 df = pd.read_excel(io=next(xlsx_file), sheet_name = sheetname) .我想我知道原因。我的日期格式为 08.20.2020,而 datae_String 被读取为 8.20.2020。我应该如何格式化它以使其相似?以及如何获取上一个日期?喜欢 08.19.2020?
    • 如果你看一下我分享的代码,你会看到我在date.today.month 前面放了一个0,所以它不应该给你那个错误。您可以检查 date_string 的输出并查看它是否匹配。无论哪种方式,您都必须调整代码以满足您的需求。对于上一个日期,您可以从日期中减去 1。日期时间模块是你的朋友
    猜你喜欢
    • 2013-08-27
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多