Python:在目录中解析和分组文件名

Fre*_*ick 1 python directory parsing

我是python的新手,但我有很多MATLAB和C的经验.

我需要做的是解析特定目录中文件的文件名,根据文件名中的字段将它们分成组,并在这些组中执行操作.

具体来说,文件名是:

PROJECT-x-SUBJECT-x-SESSION-x-TYPE.extension
Run Code Online (Sandbox Code Playgroud)

其中'-x-'被故意插入为字段分隔符.我需要对共享相同PROJECT-x-SUBJECT-x-SESSION组件的每组文件执行操作.

__ _ ____ 我最好的尝试如下:__ _ __ _ __

我可以通过以下方式一次解析每个文件:

dirList=os.listdir(directory)
for fname in dirList:  
    # kill extension
    ext = os.path.splitext(fname)
    # get the 4 fields 
    labels=ext[0].split('-x-')
    PROJECT_list.append(labels[0])
    SUBJECT_list.append(labels[1])
    ...
Run Code Online (Sandbox Code Playgroud)

...这反映了我对如何组织这些东西的唯一想法:通过创建4个列表并为每个文件名附加到它们.

然后用我的4(有序?)列表,我可以调用类似的东西:

from collections import Counter
c=Counter(SESSION_list) 
list(c)
Run Code Online (Sandbox Code Playgroud)

那么至少我有一个唯一的SESSION名称列表

建议?我可以继续,但因为我真的需要一个起点,我认为这已经足够了.

多谢你们.

Ble*_*der 5

您可以使用defaultdict制作包含列表的字典:

from collections import defaultdict

groups = defaultdict(list)

for filename in os.listdir(directory):
    basename, extension = os.path.splitext(filename)
    project, subject, session, ftype = basename.split('-x-')

    groups[session].append(filename)
Run Code Online (Sandbox Code Playgroud)

现在,groups包含会话名称和文件名之间的映射.