尝试使用glob.glob

时间:2019-05-17 15:21:01

标签: python-3.x pattern-matching glob

我正在尝试查找文件的最新版本,每个文件都包含唯一的参考代码作为其文件名的一部分,例如 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吗?还是考虑到我想要每一个的最新版本,才可以将树展平。

0 个答案:

没有答案