需求:某一文件存储服务上大致目录结构为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
......上层还有若干目录├─1989pic
......上层还有若干目录│..........├─1989GC20
#这一级的目录就是目标需要得到的
......上层还有若干目录│..........│ └─TS8
......上层还有若干目录│..........│ └─96185X
......上层还有若干目录│..........│ └─000
......上层还有若干目录│..........│ └─012
......上层还有若干目录│..........└─1989GC21
#这一级的目录就是目标需要得到的
......上层还有若干目录│ └─TN3
......上层还有若干目录│ └─85341X
......上层还有若干目录│ └─000
......上层还有若干目录│ └─001
......上层还有若干目录└─1990pic
#这一级的目录就是目标需要得到的
......上层还有若干目录 ...├─1990gc01
#以下目录未展开
......上层还有若干目录 ...├─1990gc12
#同上
......上层还有若干目录 ├─1990jj01
#同上
......上层还有若干目录 .......├─1990jj02
#同上
......上层还有若干目录 .......├─1990zk01
#同上
......上层还有若干目录 └─1990zk122
#同上
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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)
|
本文转自天山三害 51CTO博客,原文链接:http://blog.51cto.com/skybug/1396081,如需转载请自行联系原作者