我想在HGG_LGG的子文件夹中搜索文件VSD.Br.XX.O.MR_T1.[some varying number].*
。例如,在HGG_LGG的子文件夹中搜索VSD.Br.XX.O.MR_T1.25987.mha
。我可以只使用VSD.Br.XX.O.MR_T1.*
这样做但问题是有VSD.Br.XX.O.MR_T1c.[some varying number] .*
这样的文件,我不想扫描。简而言之,我想在T1之后使用整个字符串(包括点(。)),然后在该字符串上应用通配符.*
。以下是代码。我尝试使用\\
来转义点但是没有用matches
仍然是空的。
import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
for filename in fnmatch.filter(filenames, 'VSD.Br.XX.O.MR_T1\\..*'):
matches.append(os.path.join(root, filename))
答案 0 :(得分:0)
这有点棘手。为了找到VSD.Br.XX.O.MR_T1c.[some varying number] .*
形式的所有文件,所以包含倒数第二个点,然后是一些变化的字符串,然后是保存文件的所有扩展,我们需要使用注释中指向的正则表达式。
直接使用VSD.Br.XX.O.MR_T1。*确实获取了其他文件。这是截图显示相同的。
以下解决方案为我工作。
import os
import re
matches = []
for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
for filename in [f for f in filenames if re.match('VSD.Brain.XX.O.MR_T1\\..*', f)]:
matches.append(os.path.join(root, filename))