使用python从多个文件名中提取子集



我在一个名为的目录中有很多文件

"data_2000151_avg.txt',"data_2000251_avg.txt'、"data_2003051_avg_txt'…

假设其中一个名为fname。我想从每个类似的中提取一个子集:

fname.split('_')[1][:4]

这将导致2000年。我想从目录中的所有文件中收集这些文件,并创建一个唯一的列表。我该怎么做?

您应该使用os。

import os
dirname = 'PathToFile'
myuniquelist = []
for d in os.listdir(dirname):
    if d.startswith('fname'):
        myuniquelist.append(d.split('_')[1][:4])

编辑:刚刚看到你关于想要一套的评论。在for循环之后添加此行。

myuniquelist = list(set(myuniquelist))

如果唯一列表意味着一个唯一值的列表,那么glob(如果文件夹中包含与所需名称格式不匹配的文件)和set的组合应该可以做到:

from glob import glob
uniques = {fname.split('_')[1][:4] for fname in glob('data_*_avg.txt')}
# In case you really do want a list
unique_list = list(uniques)

这假设文件位于当前工作目录中。根据需要将路径附加到glob('path/to/data_*_avg.txt')

要在目录中列出文件,可以使用os.listdir()。要生成唯一值列表,最适合的是设置理解。

import os
data = {f.split('_')[1][:4] for f in os.listdir(dir_path)}
list(data) #if you really need a list

最新更新