如何将特定扩展名grep到列表python3中

时间:2018-07-08 13:18:14

标签: python python-3.x glob

我有一个包含多个文件扩展名的目录,并且我想将包含2个不同扩展名的所有文件的路径grep到列表中。到目前为止,我已经尝试过:

my_files = list(Path(my_dir).glob('**/*.txt' and '**/*.txt.gz'))

但是使用上面的脚本,我只得到了.txt.gz文件的路径:

[PosixPath('/home/myproject/cd_4/M_1and2.txt.gz')]

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如评论中所述,'ptrn1' and ptrn2'始终等于'ptrn2'

因此,您绝对不能通过单个glob调用来做到这一点。为每个模式分别调用glob并合并结果

my_files  = list(Path('test').glob('**/*.txt'))
my_files += list(Path('test').glob('**/*.txt.gz'))

或者作为一线客

my_files = [p for ptrn in ['**/*.txt', '**/*.txt.gz'] for p in Path('test').glob(ptrn)]