【发布时间】:2021-11-20 06:40:12
【问题描述】:
我有两个目录。它们都包含 TXT 文件。对于dir_1 中的每个TXT 文件,我正在尝试在dir_2 中获取匹配的TXT 文件。如果dir_1 的日期(在文件名中)与dir_2 中的文件日期匹配,则匹配。
dir_1 = c:\data\desktop\pointA\txt-files
dir_2 = c:\data\desktop\pointB\txt-files
dir_1 包含这样的文件(这些目录可以包含多个相同日期但不同时间的文件):
AAA_C1_20200907-07u43m55s_ab.txt
AAA_T8_20200907-08u18m55s_ab.txt
FFF_T8_20201025-12u58m55s_ab.txt
FFF_T8_20201025-05u53m55s_ab.txt
dir_2 包含这样的文件(这些文件具有唯一的日期):
MM2020-09-07-AB.dat
MM2020-10-25-AB.dat
MM2020-10-26-AB.dat
这是我的代码:
dir_1 = os.listdir(dir_1)
dir_2 = os.listdir(dir_2)
dir_2_dates = []
for file in dir_2:
find = re.search("MM(.+?)AB", file).group(1)
dir_2_dates.append(find)
for dir_1_file in dir_1:
dir_1_date = re.search("_(.\d+)-", dir_1_date ).group(1)
if dir_1_date in dir_2_dates:
matching_dir_2 = [file for file in dir_2 if file == dir_1_date ]
print(matching_dir_2)
期望的输出:
MM20200907AB.dat
MM20200907AB.dat
MM20201025AB.dat
MM20201025AB.dat
我当前的输出是空的
【问题讨论】:
-
作为调试的第一步,您是否尝试过打印您提取的日期的样子?
-
似乎您正在将
20200907之类的字符串与2020-09-07-之类的字符串进行比较。 Python 不知道那些应该是日期,并且它们应该是相等的。您必须对它们进行规范化,以便它们实际上 相等。 -
你们能告诉我你的意思吗?
标签: python list for-loop list-comprehension