我在目录中有很多文件,名称如下:
'data_2000151_avg.txt','data_2000251_avg.txt','data_2003051_avg.txt'......
假设其中一个被称为fname。我想从每个中提取一个子集,如下所示:
fname.split('_')[1][:4]
这将得到2000.我想从目录中的所有文件中收集这些文件并创建一个唯一的列表。我该怎么做?
答案 0 :(得分:1)
你应该使用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))
答案 1 :(得分:0)
要列出目录中的文件,您可以使用os.listdir()。要生成唯一值列表,最合适的是set comprehension。
import os
data = {f.split('_')[1][:4] for f in os.listdir(dir_path)}
list(data) #if you really need a list
答案 2 :(得分:0)
如果唯一列表表示唯一值列表,则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')
。