python遍历目录_Python遍历目录的4种方法

1.os.popen运行shell列表命令

def traverseDirByShell(path):

for f in os.popen('ls ' + path):

print f.strip()

2.利用glob模块

glob.glob(path)返回带目录的文件名.通配符和shell相似.path不能包含shell变量.

def traverseDirByGlob(path):

path = os.path.expanduser(path)

for f in glob(path + '/*'):

print f.strip()

3.利用os.listdir(推荐)

该方法返回不带根目录的文件名或子目录名

def traverseDirByListdir(path):

path = os.path.expanduser(path)

for f in os.listdir(path):

print f.strip()

4.利用os.walk(推荐)

返回一个包含3个项目的元组:当前目录名称,子目录名称,子文件名称

def traverseDirByOSWalk(path):

path = os.path.expanduser(path)

for (dirname, subdir, subfile) in os.walk(path):

#print('dirname is %s, subdir is %s, subfile is %s' % (dirname, subdir, subfile))

print('[' + dirname + ']')

for f in subfile:

print(os.path.join(dirname, f))

整合代码:

#!/usr/bin/python

import os

from glob import glob

def printSeparator(func):

def deco(path):

print("call method %s, result is:" % func.__name__)

print("-" * 40)

func(path)

print("=" * 40)

return deco

@printSeparator

def traverseDirByShell(path):

for f in os.popen('ls ' + path):

print f.strip()

@printSeparator

def traverseDirByGlob(path):

path = os.path.expanduser(path)

for f in glob(path + '/*'):

print f.strip()

@printSeparator

def traverseDirByListdir(path):

path = os.path.expanduser(path)

for f in os.listdir(path):

print f.strip()

@printSeparator

def traverseDirByOSWalk(path):

path = os.path.expanduser(path)

for (dirname, subdir, subfile) in os.walk(path):

#print('dirname is %s, subdir is %s, subfile is %s' % (dirname, subdir, subfile))

print('[' + dirname + ']')

for f in subfile:

print(os.path.join(dirname, f))

if __name__ == '__main__':

path = r'~/src/py'

traverseDirByGlob(path)

traverseDirByGlob(path)

traverseDirByListdir(path)

traverseDirByOSWalk(path)

代码节选自codego.net

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30193029/viewspace-1571247/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值