需求:某一文件存储服务上大致目录结构为:

......上层还有若干目录├─1989pic
......上层还有若干目录│..........├─1989GC20      #这一级的目录就是目标需要得到的
......上层还有若干目录│..........│  └─TS8
......上层还有若干目录│..........│      └─96185X
......上层还有若干目录│..........│          └─000
......上层还有若干目录│..........│              └─012
......上层还有若干目录│..........└─1989GC21     #这一级的目录就是目标需要得到的
......上层还有若干目录│     └─TN3
......上层还有若干目录│          └─85341X
......上层还有若干目录│              └─000
......上层还有若干目录│                  └─001
......上层还有若干目录└─1990pic       #这一级的目录就是目标需要得到的
......上层还有若干目录  ...├─1990gc01    #以下目录未展开
......上层还有若干目录  ...├─1990gc12    #同上
......上层还有若干目录  ├─1990jj01    #同上
......上层还有若干目录  .......├─1990jj02    #同上
......上层还有若干目录  .......├─1990zk01    #同上
......上层还有若干目录  └─1990zk122   #同上


import os,re
pattern = re.compile(r'\d{4}[a-zA-Z]{2}\d{2,}') #编译个正则表达式
listfiles = []
gch = []
tempgch = []
def getgch(listfiles):
    for files in listfiles:   #把传入的文件列表逐个取出用'\\'分开后写入list
        global pattern
        global gch
        global tempgch
        a = files.split('\\')
        for i in a:         #将list逐个取出和正则表达式匹配
            match = pattern.match(i)
            if match:
                tempgch.append(match.group()) #把匹配的结果放到临时list中
    gch=list(set(tempgch))      #把临时list去重
    return gch
      
def walkdir(srcdir):    #遍历目录
    global listfiles
    srcdir = os.path.abspath(srcdir)
    for parent,dirs,files in os.walk(srcdir):
        for file in files:
            infile = os.path.join(parent,file)
            listfiles.append(infile)
    #print listfiles
    getgch(listfiles)   #返回文件列表,这里似乎更应该直接返回dirs这个列表即可
srcdir = str(raw_input("please input the dirs:\n"))
walkdir(srcdir)