我在一个名为的目录中有很多文件
"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