Python遍历目录的4种方法实例介绍

yipeiwu_com6年前Python基础

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)

相关文章

python实现用户答题功能

python实现用户答题功能

python实战,用户答题分享给大家。 主要包含内容,文件的读取,更改,保存。不同文件夹引入模块。输入,输出操作。随机获取数据操作 随机生成算数表达式,用户输入答案,正确记录分数,错误返...

对Python实现累加函数的方法详解

这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 Sum(1) =>1 Sum(1,2,3) =>6 MegaSum(1)() =>1 MegaS...

深入浅析python 中的匿名函数

深入浅析python 中的匿名函数

定义 匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。 lambda语法的定义如下: lambda [arg1 [,a...

Django框架自定义模型管理器与元选项用法分析

Django框架自定义模型管理器与元选项用法分析

本文实例讲述了Django框架自定义模型管理器与元选项用法。分享给大家供大家参考,具体如下: 自定义模型管理器 每个模型类默认都有一个 objects 类属性,可以把它叫 模型管理器。它...

Python调用C++程序的方法详解

前言 大家都知道Python的优点是开发效率高,使用方便,C++则是运行效率高,这两者可以相辅相成,不管是在Python项目中嵌入C++代码,或是在C++项目中用Python实现外围功能...