正在尝试使用glob在目录中创建从V2到V10的文件列表

2024-05-18 17:52:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在目录中创建一个文件列表,该列表与目录中特定.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文件导入到data.frame中,就像在R中一样

提前谢谢


Tags: 文件csv版本目录列表data文件名frame
3条回答

如果你确切地知道你想要匹配的名字,也许你不需要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']

您可以使用^{}和正则表达式来提供文件名的筛选列表,而不必纠结于^{}模式的限制:

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'))

基于this答案

但是,这仍然不能与您要求的V10匹配,因此您可以执行以下操作(假设嵌套目录中有多个V*)

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

否则,如果当前目录下只有10个文件,@PRMoureu的答案更适合这个目的

相关问题 更多 >

    热门问题