当前位置 博文首页 > Python遍历目录的4种方法实例介绍

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

    作者:admin 时间:2021-07-31 18:57

    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)

    jsjbwy
    下一篇:没有了