从列表中获取Python Glob模块的参数时,文件名大小写更改为较低

从列表中获取Python Glob模块的参数时,文件名大小写更改为较低,python,windows,glob,Python,Windows,Glob,我有一个带有文件名的Python列表(“filename\u mask\u list”),我需要搜索一些根目录及其子目录,找到与我的文件名匹配的文件,以便将它们复制到某个公共目录 我已使用pathlib.Path.glob递归搜索目录: from pathlib import Path filename_mask_list = ['DEU.FourSeasonsHotelsandResorts.csv', 'DEU.Hilton.csv', 'DEU.Hertz.csv'] for search

我有一个带有文件名的Python列表(“filename\u mask\u list”),我需要搜索一些根目录及其子目录,找到与我的文件名匹配的文件,以便将它们复制到某个公共目录

我已使用pathlib.Path.glob递归搜索目录:

from pathlib import Path
filename_mask_list = ['DEU.FourSeasonsHotelsandResorts.csv', 'DEU.Hilton.csv', 'DEU.Hertz.csv']
for searched_file in filename_mask_list:
    for searched_path in Path('C:\root_dir').glob('**/' + searched_file):
        print(searched_path)
使用上述代码,在打印的“搜索路径”中找到的文件名是小写的。如果使用直接选项而不是将列表中的元素作为搜索条件传递,则大小写将保留:

for searched_path in Path('C:\root_dir').glob('**/DEU*.csv'):
    print(searched_path)

我需要保留复制文件的文件名大小写,因为使用小写将导致相关进程崩溃。

使用
glob.glob
将为您提供与搜索条件中大小写相同的文件名。我不知道这种明显不一致的原因

import glob
filename_mask_list = ['DEU.FourSeasonsHotelsandResorts.csv', 'DEU.Hilton.csv', 'DEU.Hertz.csv']
for searched_file in filename_mask_list:
    for searched_path in glob.glob('C:\root_dir/**/' + searched_file, recursive=True):
        print(Path(searched_path))

请注意,为了清晰起见,我保留了您的拼写
'C:\root\u dir'
,但这是大错特错。

感谢您的支持。没有“路径”的选项运行良好。Python列表中的根路径是Windows风格的路径,例如“D:\2019.09\EUR”,我在搜索模式中使用了正斜杠。但除了文件名的下半部外,它还能工作。顺便问一下:你知道为什么我的问题被否决了吗?这是不清楚、愚蠢等吗?@zwornik我否决了这个问题,因为很明显,我没有意识到这是关于windows的。我无法在不编辑问题的情况下撤销它,因此我添加了
Windows
标记并反转了我的投票。只是为不小心添加了陷阱:searched_路径匹配搜索词的大小写,而不是找到的文件的实际大小写!因此,切换到glob并不能解决pathlib的glob和rglob返回错误的小写结果的问题(我会说bug)。