只列出当前目录和子目录方法一
1、编辑脚本
1
2
3
4
5
|
[root@iZbp171r05i3piseee5kuaZ tmp] # vim /root/filelist.py
#!/usr/bin/env python import os
for root,dirs,files in os.walk( '/tmp' ):
print root
|
2、执行脚本和确认
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@iZbp171r05i3piseee5kuaZ tmp] # python /root/filelist.py
/ tmp
/ tmp / gxmdir
/ tmp / gxmdir / ddd
/ tmp / csdir
/ tmp / .ICE - unix
[root@iZbp171r05i3piseee5kuaZ tmp] # tree -d
. ├── csdir └── gxmdir └── ddd
3 directories
|
只列出当前目录和子目录方法二
1、编辑脚本
1
2
3
4
5
6
|
[root@iZbp171r05i3piseee5kuaZ tmp] # vim /root/filelist.py
#!/usr/bin/env python import os
for root,dirs,files in os.walk( '/tmp' ):
print root
print dirs
|
2、执行脚本和确认([]里面表示子目录)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@iZbp171r05i3piseee5kuaZ tmp] # python /root/filelist.py
/ tmp
[ 'gxmdir' , 'csdir' , '.ICE-unix' ]
/ tmp / gxmdir
[ 'ddd' ]
/ tmp / gxmdir / ddd
[] / tmp / csdir
[] / tmp / .ICE - unix
[] [root@iZbp171r05i3piseee5kuaZ tmp] # tree -d
. ├── csdir └── gxmdir └── ddd
3 directories
|
列出当前目录、子目录和文件方法一
1、编辑脚本
1
2
3
4
5
6
7
|
[root@iZbp171r05i3piseee5kuaZ tmp] # vim /root/filelist.py
#!/usr/bin/env python import os
for root,dirs,files in os.walk( '/tmp' ):
print root
print dirs
print files
|
2、执行脚本和确认(第二个[]里面表示子目录,第三个[]里面表示文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@iZbp171r05i3piseee5kuaZ tmp] # python /root/filelist.py
/ tmp
[ 'gxmdir' , 'csdir' , '.ICE-unix' ]
[ 'mqm_status.txt' , '.s.PGSQL.5432' , 'zapache-9009-http___localhost_99_server-status_auto.cache' , 'zapache-9009-http___localhost_99_server-status_auto.ts' , '.s.PGSQL.5432.lock' , 'Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>' , 'tcp_status.txt' , 'dspam.7z' , 'smtp_monitor-stderr---supervisor-8onXRl.log' , 'dspam.csv' ]
/ tmp / gxmdir
[ 'ddd' ]
[ '2222' , '1111' ]
/ tmp / gxmdir / ddd
[] [ '5555' ]
/ tmp / csdir
[] [ '3333' , '4444' ]
/ tmp / .ICE - unix
[] [] [root@iZbp171r05i3piseee5kuaZ tmp] # tree -d
. ├── csdir └── gxmdir └── ddd
3 directories
|
列出当前目录、子目录和文件方法二
1、编辑脚本
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
30
|
#!/usr/bin/env python import os
for root,dirs,files in os.walk( '/tmp' ):
for name in files:
print (os.path.join(root,name))
为什么files要再一次 for 循环列出来呢?因为列出来的格式是这样的,好用于os.path.join方法:
单独 print name看看:
mqm_status.txt .s.PGSQL. 5432
zapache - 9009 - http___localhost_99_server - status_auto.cache
zapache - 9009 - http___localhost_99_server - status_auto.ts
.s.PGSQL. 5432.lock
Aegis - <Guid( 5A2C30A2 - A87D - 490A - 9281 - 6765EDAD7CBA )>
tcp_status.txt dspam. 7z
smtp_monitor - stderr - - - supervisor - 8onXRl .log
dspam.csv 2222 1111 5555 3333 4444 没列出来的格式是这样的,不方便用于os.path.join方法: 单独 print files看看:
[ 'mqm_status.txt' , '.s.PGSQL.5432' , 'zapache-9009-http___localhost_99_server-status_auto.cache' , 'zapache-9009-http___localhost_99_server-status_auto.ts' , '.s.PGSQL.5432.lock' , 'Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>' , 'tcp_status.txt' , 'dspam.7z' , 'smtp_monitor-stderr---supervisor-8onXRl.log' , 'dspam.csv' ]
[ '2222' , '1111' ]
[ '5555' ]
[ '3333' , '4444' ]
[] |
2、执行脚本和确认
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@iZbp171r05i3piseee5kuaZ tmp] # python /root/filelist.py
/ tmp / mqm_status.txt
/ tmp / .s.PGSQL. 5432
/ tmp / zapache - 9009 - http___localhost_99_server - status_auto.cache
/ tmp / zapache - 9009 - http___localhost_99_server - status_auto.ts
/ tmp / .s.PGSQL. 5432.lock
/ tmp / Aegis - <Guid( 5A2C30A2 - A87D - 490A - 9281 - 6765EDAD7CBA )>
/ tmp / tcp_status.txt
/ tmp / dspam. 7z
/ tmp / smtp_monitor - stderr - - - supervisor - 8onXRl .log
/ tmp / dspam.csv
/ tmp / gxmdir / 2222
/ tmp / gxmdir / 1111
/ tmp / gxmdir / ddd / 5555
/ tmp / csdir / 3333
/ tmp / csdir / 4444
[root@iZbp171r05i3piseee5kuaZ tmp] # tree -d
. ├── csdir └── gxmdir └── ddd
3 directories
|
列出当前目录、子目录和文件方法三
1、编辑脚本
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/usr/bin/env python import os
def scanfile(path):
filelist = os.listdir(path)
allfile = []
for filename in filelist:
filepath = os.path.join(path,filename)
if os.path.isdir(filepath): #如果是目录,则执行函数。
scanfile(filepath)
print filepath #如果不是目录,则直接打印filepath文件路径。
allfile = scanfile( '/root/' )
|
备注:
1、os.walk()原型为:os.walk(top, topdown=True, onerror=None, followlinks=False),我们一般只使用第一个参数。(topdown指明遍历的顺序)。
该方法对于每个目录返回一个三元组,(dirpath, dirnames, filenames)。第一个是路径,第二个是路径下面的目录,第三个是路径下面的非目录(对于windows来说也就是文件)
2、os.path.join(path1[, path2[, ...]]) #把目录和文件名合成一个路径
本文转自 sailikung 51CTO博客,原文链接:http://blog.51cto.com/net881004/2051910,如需转载请自行联系原作者