我正在尝试查找文件的最新版本,每个文件都包含唯一的参考代码作为其文件名的一部分,例如 12345 。我有大量参考代码成对出现,因为该程序使用import Fuzzywuzzy比较两个pdf文件的内容(每次)。输出是模糊比率和文件夹路径的列表。
我遇到的问题是使用glob.glob尝试查找树结构中每个文件的最新版本。当所有文件都在一个文件夹中时,我可以正常工作。
参考代码在名为listoflists的列表中。它循环遍历这些文件并将其连接在文件路径中。我尝试使用** \(仅在检查文件后缀时有效)(在树上)。 pdf。但是,当使用通配符的以太侧代码检查树中的参考代码时,它没有给出我期望的结果
有效:-
r"C:\compare2\*" + str(log1) + "*.pdf"
无法正常工作:-
r"C:\compare2\**\*" + str(log1) + "*.pdf"
测试一个文件夹时没有错误,我得到的结果是预期的,然后在多个文件夹中使用**时,不会检查所有文件夹的字符串。
keep_file_path1 = []
keep_file_path2 = []
fuzzy_list = []
def log_num(fuzzy_list, list_of_lists):
# iterate through log numbers stored in list
for log1, log2 in list_of_lists:
# passing a string into the file name by + concatenating +.
file_path1 = r"C:\compare2\**\*" + str(log1) + "*.pdf"
file_path2 = r"C:\compare2\**\*" + str(log2) + "*.pdf"
# check if files exists
if glob.glob(file_path1):
print("there is a match for log number: " + str(log1) + " file_path1")
if glob.glob(file_path2):
print("there is a match for log number: " + str(log2) + " file_path2")
# go to compare function
compare(file_path1, file_path2)
else:
print ("NO Matches for log number: " + str(log1) + " or for log number: " + str(log2) + ".")
continue # go find a different number
else:
save_to_file(fuzzy_list, keep_file_path1, keep_file_path2)
检查最新版本似乎可行(在一个文件夹中时...)并且在另一功能中
# check for the newest file
latest_file1 = max(list_of_files, key=os.path.getctime)
我还没有尝试过os.walk,因为想先尝试glob。可以使用glob吗?还是考虑到我想要每一个的最新版本,才可以将树展平。