使用Glob时添加文件时间戳列的修改

时间:2019-05-14 23:11:41

标签: python pandas glob

我在一个文件夹中有多个文件,这些文件在不同时间被用户修改。每周我都将它们合并到一个主文件中,但是我需要跟踪上次修改文件的时间。这是我要自动化的手动过程。

我编写了全局代码,但似乎无法添加一列,该列将提供从每个文件到主文件的修改时间

all_data = pd.DataFrame()
for f in glob.glob("..\Python_Practice\Book*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df, ignore_index=True)
all_data.head()


all_data[time] = time.strftime('%m%d%H%M', os.path.gmtime('file')

它并没有真正起作用,并且在论坛上找不到任何可能做类似事情的东西

2 个答案:

答案 0 :(得分:1)

您已经很接近了,但是您需要遍历文件并将os.path.getmtime传递到列表中。您可以将它们传递给索引。

以下内容将会

  • 查找所有.xlsx个文件
  • 将它们合并为一个列表
  • 获取上次修改的Unix时间
  • 将Unix时间转换为日期时间
  • 将数据帧合并为一个,并将日期时间传递到索引中。

        from datetime import datetime 
        allFiles = glob.glob('*.xlsx')
        dfs = [pd.read_excel(f) for f in allFiles]
        keys = [datetime.fromtimestamp(os.path.getmtime (f)).strftime('%Y-%m-%d %H:%M:%S') for f in allFiles]
        frame = pd.concat(dfs, keys=keys)
    
  • 答案 1 :(得分:1)

    在处理每个文件时,我会尝试使用时间戳。您的代码可能会变成:

    all_data = pd.DataFrame()
    for f in glob.glob("..\Python_Practice\Book*.xlsx"):
        df = pd.read_excel(f)
        df['time'] = time.strftime('%m%d%H%M', os.path.gmtime('file')
        all_data = all_data.append(df, ignore_index=True)
    all_data.head()