如何在Python中列出目录的内容?

时间:2010-05-03 15:56:04

标签: python path

不可能很难,但我有精神障碍。

8 个答案:

答案 0 :(得分:212)

import os
os.listdir("path") # returns list

答案 1 :(得分:46)

一种方式:

import os
os.listdir("/home/username/www/")

Another way

glob.glob("/home/username/www/*")

Examples found here

上面的glob.glob方法不会列出隐藏文件。

自从我几年前最初回答这个问题以来,pathlib已被添加到Python中。我现在列出目录的首选方法通常是iterdir对象上的Path方法:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

答案 2 :(得分:33)

如果您需要递归,可以使用

os.walk

import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

答案 3 :(得分:17)

glob.globos.listdir会这样做。

答案 4 :(得分:12)

os module处理所有这些事情。

  

os.listdir(path)

     

返回一个列表,其中包含path给出的目录中的条目名称。   该列表按任意顺序排列。它不包括特殊条目'。'和   '..'即使它们出现在目录中。

     

可用性:Unix,Windows。

答案 5 :(得分:2)

在Python 3.4+中,您可以使用新的pathlib包:

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir()返回一个迭代器,可以很容易地变成list

contents = list(Path('.').iterdir())

答案 6 :(得分:2)

从Python 3.5开始,您可以使用os.scandir

区别在于它返回文件 entries 而不是名称。在Windows等某些操作系统上,这意味着您不必os.path.isdir/file来了解它是否是文件,并且可以节省CPU时间,因为在Windows中扫描目录时stat已经完成:< / p>

列出目录并打印大于max_value字节的文件的示例:

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

(阅读我的here基于性能的详尽解答)

答案 7 :(得分:1)

下面的代码将列出目录和目录中的文件。另一个是os.walk

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)