Python glob但针对的是字符串列表而不是文件系统

80
我希望能够匹配glob格式的模式到一个字符串列表中,而不是到实际的文件系统中的文件。有没有办法做到这一点,或者将一个glob模式转换为正则表达式?

我不知道我是否做错了什么,但我认为作者想要一个可以匹配任何字符串而不仅仅是文件名的解决方案,而这里的解决方案甚至无法从[Parsed_volumedetect_0 @ 0x7fbf12004080] max_volume: -9.3 dB中提取出一个简单的字符串如max_volume。我正在尝试从ffmpeg输出中提取{max,mean}_volume - vault
12个回答

0

这只是一个例子。不确定是否完全符合人们的需求,但我喜欢它的简单性:

files = [
    'AI_datasets/client1/metadata.json',
    'AI_datasets/client2/metadata.json',
    'AI_datasets/client3/metadata.json',
    'AI_datasets/client1/X.npy',
    'AI_datasets/client2/X.npy',
    'AI_datasets/client3/X.npy',
    'AI_datasets/client1/y.npy',
    'AI_datasets/client2/y.npy',
    'AI_datasets/client3/y.npy'
]

metadata = [f for f in files if 'metadata.json' in f]

>>> metadata
['AI_datasets/client1/metadata.json', 'AI_datasets/client2/metadata.json', 'AI_datasets/client3/metadata.json']

1
不够健壮;这将匹配像 fmetadata.jsonmetadata.json.exe 这样的文件。 - Jason S

-1
from wcmatch import pathlib
pathlib.PurePath("a/b/c").globmatch("**/*", flags=pathlib.GLOBSTAR) // True

3
你介意给你提出的解决方案增加更多背景信息吗? - schmijos
1
仅提供代码的答案并不是很有用,因为它们没有解释你在做什么以及为什么这样做。 - Phantômaxx
1
wcmatch 在标准库中不存在。如果你要推荐第三方模块,请明确说明。 - ChrisGPT was on strike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接