我有一个文件夹(与python脚本位于同一目录中),从1月1日到12月31日有很多csv文件,我只想从该文件夹中读取特定日期范围内的特定csv文件到python中,然后将这些文件附加到列表中。
文件命名如下,多个月的每一天都有文件:
第一条银行在2020年2月1日至2020年3月31日期间,可以在2020年3月1日至2020年3月31日期间,在2020年3月31日至2020年3月31日期间,在2020年3月31日至2020年3月31日期间,在2020年3月31日期间,在2020年3月31日至2020年3月31日期间,在2020年3月31日期间,在2020年3月31日至2020年3月31日期间,在2020年3月31日期间,在2020年3月31日至2
目前,我有代码通过使用'startswith'和'endswith'语法来获取整个三月份的csv文件。但是,这样做只允许我一次针对一个月的文件。我希望能够在指定的日期范围内读取多个月的csv文件,例如10月,11月和12月或2月和3月(基本上开始和结束在任何月份)。
下面的代码只获取March的文件,然后从列表中提取文件并将其合并到一个 Dataframe 中。
#Accessing csv files from directory
startdate = datetime.strptime("2022-05-01", "%Y-%m-%d")
enddate = datetime.strptime("2022-06-30", "%Y-%m-%d")
all_files = []
path = os.path.realpath(os.path.join(os.getcwd(),os.path.dirname('__file__')))
for root, dirs, files in os.walk(path):
for file in files:
if file.startswith("/BANK_NIFTY_5MINs_") and file.endswith(".csv"):
file_date = datetime.strptime(os.path.basename(file), "BANK_NIFTY_5MINs_%Y-%m-%d.csv")
if startdate <= file_date <= enddate:
all_files.append(os.path.join(root, file))
上述外观的输出:* 'BANK_NIFTY_5MINs_2020 -03- 01.csv'* 等等,但必须是完整路径,例如:* 'c:\Users\User123\Desktop\Myfolder\2020\BANK\BANK_NIFTY_5MINs_2020-03- 01.csv'*.合并功能要求列表中的完整路径为该格式才能进一步处理。
2条答案
按热度按时间insrf1ej1#
我会采用不同的方法,以获得更多灵活性
输出
q8l4jmvw2#
如果您想使用regex执行此操作,请参阅以下内容:
这是最基本的一个让你去,它可能会得到改善。
但对于您的情况,我会使用简单的glob: