【发布时间】:2021-03-18 21:53:39
【问题描述】:
假设我有这样的结构:
Folder1
`XX_20201212.txt`
Folder1
`XX_20201212.txt`
Folder1
`XX_20201212.txt`
我当前的脚本收集每个文件夹中的 3 个文件,处理它们并制作 1 个文件。所以现在我的脚本在 1 个日期内完成了这项工作。
现在假设结构已更改为:
Folder1
`XX_20201201.txt`
`XX_20201202.txt`
Folder1
`YY_20201201.txt`
`YY_20201202.txt`
Folder1
`ZZ_20201201.txt`
`ZZ_20201202.txt`
`ZZ_20201203.txt`
我希望我的脚本现在执行相同的操作,但要针对多个日期。我希望我的脚本检查文件名称中是否包含日期,该日期也存在于名为missing_dates 的列表中,以及该文件是否在每个目录中可用。如果是这样,我想收集它并将其处理成 1 个文件。所以如果我们假设20201201, 20201202 and 20201203 在missing_list 中。需要发生以下情况。
- 该脚本会将
XX_20201201.txt, YY_20201201.txt和ZZ_20201201.txt的文件处理为1 个文件,因为该日期存在于missing_dates中并且 它存在于每个目录中。 - 该脚本会将
XX_20201202.txt, YY_20201202.txt和ZZ_20201202.txt的文件处理为1 个文件,因为该日期存在于missing_dates中并且 它存在于每个目录中.. - 脚本将不处理
ZZ_20201203.txt的文件,因为该日期并不存在于每个目录中,即使它存在于missing_dates.中
所以实际上简短地说:3 个文件具有相同的日期(在 3 个不同的目录中),日期在 missing_dates = 继续
请注意,下面将文件处理为 1 个文件的代码已经在工作,根本问题是我必须调整循环,以便它始终处理超过 1 个日期。我不知道该怎么做....
这是读取文件的代码:
for root, dirs, files in os.walk(counter_part):
for file in files:
date_files= re.search('_(.\d+).', file).group(1)
with open(file_path, 'r') as my_file:
reader = csv.reader(my_file, delimiter = ',')
next(reader)
for row in reader:
if filter_row(row):
vehicle_loc_dict[(row[9], location_token(row))].append(row)
【问题讨论】:
标签: python list loops file if-statement