如何在不同目录中获取所有文件名?

时间:2015-02-26 05:00:17

标签: python python-2.7 filenames os.path

让我们说目录层次结构如下所示:

          A(root)
          |
B---------C--------D
|         |        |
fileB.h  fileC.png  fileD.py
         fileC1.jpg
          E
          |
         fileE.py

如何访问所有文档?或者只是走这条路。有没有办法让所有人都能做到?

我的所作所为:

path = sys.path[0]
for filename_dir in os.listdir(path):
     filename, ext = os.path.splitext(filename_dir)
     if ext == '.h':
         #do something
     elif ext == '.png'
         #do something
     .....

但据我所知listdir只能访问程序的py文件所在的目录。

1 个答案:

答案 0 :(得分:3)

这只提供目录下的目录和文件,但不是递归的:

import os

for filename in os.listdir(path):
    print filename

如果要列出绝对路径:

import os

def listdir_fullpath(d):
    return [os.path.join(d, f) for f in os.listdir(d)]

如果你想进行搜索,你会得到一个迭代器,它返回3元组,包括父目录,目录列表和每次迭代的文件列表:

for i,j,k in os.walk('.'):
    print i, j, k

例如:

    import os

    path = sys.path[0]

    for dirname, dirnames, filenames in os.walk(path):
        for subdirname in dirnames:
            print "FOUND DIRECTORY: ", os.path.join(dirname, subdirname)
        for filename in filenames:
            print "FOUND FILE: ", os.path.join(dirname, filename)