尝试创建目录中的文件列表,该文件的范围从V2到V10,使用Glob



我正在尝试在目录中创建一个文件列表,该目录匹配目录中特定的.csv文件的版本。文件名是" NH [V2] .CSV",它们的范围从" NH [V2] .CSV"到" NH [V10] .CSV"。

我如何创建一个仅占据2-10范围但不包括所有其他范围的列表,例如" NH [V1] .CSV"

这是我到目前为止所拥有的,但是它正在返回一个空列表。

nhlist = list(glob.glob('NH [V[2-9]].csv'))

我正在尝试将所有这些.csv文件导入到一个数据中。

预先感谢。

如果您确切地知道要匹配的名称,也许您不需要glob来完成此工作。

一个简单的理解可以解决问题:

nhlist = ['NH [V{}].csv'.format(i) for i in range(2,11) ]
>>>['NH [V2].csv', 'NH [V3].csv', 'NH [V4].csv', 'NH [V5].csv', 
    'NH [V6].csv', 'NH [V7].csv', 'NH [V8].csv', 'NH [V9].csv', 'NH [V10].csv']

,而不是与glob()模式的局限性搏斗,可以使用os.listdir()和正则表达式提供文件名的过滤列表:

import os
import re
pattern = re.compile(r'NH [V([2-9]|10)].csv')
nhlist = [filename for filename in os.listdir('.') if pattern.match(filename)]

尝试这个:

list(glob.glob('NH [[]V[2-9][]].csv'))

基于此答案

但是,这仍然不符合您要求的V10,因此您可以做类似的操作(假设您在嵌套目录中有多个V*)

list(glob.glob('NH [[]V[2-9][]].csv')) + 
list(glob.glob('NH [[]V10[]].csv'))

在当前目录下只有10个文件 - @prmoureu的答案将更适合此目的

最新更新