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/,如需转载,请注明出处,否则将追究法律责任。

python遍历目录_Python遍历目录的4种方法相关推荐

  1. python 字符串拼接_Python字符串拼接的6种方法(转)

    add by zhj: 对于多行字符串连接,第6种连接方法很方便,连接时不会添加额外的空格. 1. 加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此 ...

  2. 用python打开视频_Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  3. python图片保存_python读取和保存图片5种方法对比

    python读取和保存图片5种方法对比 python中对象之间的赋值是按引用传递的,如果需要拷贝对象,需要用到标准库中的copy模块 方法一:利用 PIL 中的 Image 函数 这个函数读取出来不是 ...

  4. python字符串百分号_Python字符串格式化的2种方法

    本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下 用于字符串的拼接,性能更优. 字符串格式化有两种方式:百分号方式.format方式. 百分号方式比较老,而format方式是比 ...

  5. python矩阵转置_Python 矩阵转置的几种方法小结

    我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...

  6. python 字符串替换_python字符串替换的2种方法

    一.python字符串替换可以用两种方法实现: 1.用字符串本身的方法 2.用正则来替换字符串 下面用个例子来实验: a = 'hello word' 我把a字符串里的word替换为python 1. ...

  7. python 矩阵类型转换_Python 矩阵转置的几种方法小结

    我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): fo ...

  8. python线性方程组求解_python求解方程组的三种方法

    python求解方程组的三种方法: Numpy求解方程组x + 2y = 3 4x + 5y = 6 当然我们可以手动写出解析解,然后写一个函数来求解,这实际上只是用 Python 来单纯做" ...

  9. python词频统计_python统计词频的三种方法

    1.利用字典dict来完成统计 #举例: a = [1 2 3 1 1 2] dict = {} for key in a: dict[key] = dict.get(key 0) + 1 #字典的g ...

  10. python中格式化_Python中格式化的两种方法

    在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:>>> 'Hello, %s' % 'world' 'Hello, world' >>> ' ...

最新文章

  1. vmware6.5实现基于win2003的群集
  2. php 开源 流量统计,5款开源的PHP网站流量统计应用程序
  3. https ddos攻击——由于有了认证和加解密 后果更严重 看绿盟的产品目前对于https的ddos cc攻击需要基于内容做检测...
  4. POJ2503 UVA10282 Babelfish
  5. 语义分割 | segnet 制作自己的数据,如何训练,如何测试,如何评价
  6. (转)C#网络编程(订立协议和发送文件) - Part.4
  7. Kinect for Windows SDK发布
  8. 关于Cocos2d-x随机数的生成
  9. Zabbix监控网络设备讲解
  10. linux之sed使用
  11. 220.存在重复元素III
  12. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux...
  13. torch.nn到底是什么?
  14. 2021西湖论剑misc——Yusa的小秘密
  15. PHP实现短网址还原
  16. java 抽象类和接口——抽象类
  17. 阿里云主机免费申请级网站配置
  18. Activiti7实战入门一:请假单流程的制定以及代码实现
  19. java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: YES)问题
  20. mt4 python神经网络_【零基础】MT4量化入门二:关于MT4的总结

热门文章

  1. 反思PHP多个字符串函数
  2. jQuery中的for循环var与let区别
  3. Ascii排序(按字母从小到大排序),并以url地址传参方式拼接
  4. java中spring的注解_spring中的各种注解解析
  5. 小米路由器sn算ssh密码_【玩转路由】小米路由器开启SSH
  6. 大一计算机理论考试知识点,计算机一级考试理论知识点整理.doc
  7. linux如何导出加密卡私钥,linux – 如何使用gpg中的私钥加密文件
  8. 【ruoyi若依】为当前页添加显示事件
  9. 【若依(ruoyi)】swagger 接口 @ApiModelProperty 添加枚举值说明
  10. 【sprinb-boot】@ComponentScan 使用