问题描述
目录中有各种 csv 文件,其中包含日期作为名称(somename_20210202.csv
、xyzname_20210305.csv
等)。我想阅读下面提到的给定日期范围的文件。有了这些日期的列表,我创建了一个文件模式。此外,我想在 glob.glob 中使用该模式来获取文件,但 globbed_files
返回空列表。我的代码在 pattern_list
之前都是正确的。请指出问题出在哪里。
from datetime import timedelta,date
import pandas as pd
import numpy as np
import glob
import os
import datetime as dt
def daterange(date1,date2):
for n in range(int ((date2 - date1).days)+1):
yield date1 + timedelta(n)
start_dt = date(2020,01,15)
end_dt = date(2020,02,10)
abc = []
weekdays = [5,6]
for dt in daterange(start_dt,end_dt):
if dt.weekday() not in weekdays:
abc.append(dt.strftime("%d-%b-%Y"))
#print(dt.strftime("%d-%b-%Y"))
print(abc)
dir = r"C:\User\Folder"
pattern_list = []
for dates in abc:
pattern = f'*_{dates}.csv' # use wildcards (*)
pattern_list.append(pattern)
print(pattern_list)
for x in pattern_list:
globbed_files = glob.glob(os.path.join(dir,x))
print(globbed_files)
解决方法
您的模式是正确的,并且从 glob 模块中获取文件也是正确的。只确保你的。 csv 文件存在于您的文件目录 ('C:\User\Folder'
) 路径中,然后您将从 globbed_files
否则银行列表中获得相同的结果。
例如:
创建两个或多个文件作为 a_20210202.csv,b_20210202.csv and c_20210305.csv
等...
并设置您的模式日期列表,例如:
pattern_list = [*_20210202.csv,*_20210305.csv]
然后:
dir = "your created files folder path"
for x in pattern_list:
globbed_files = glob.glob(os.path.join(dir,x))
print(globbed_files)
注意:示例仅用于演示目的,其静态方式创建文件然后获取。