应该不难,但我脑子有问题。


当前回答

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

不同之处在于它返回的是文件条目而不是名称。在一些操作系统上,比如windows,这意味着你不需要os.path。isdir/file来知道它是否是一个文件,这节省了CPU时间,因为在Windows中扫描dir时stat已经完成了:

使用实例列出目录并打印大于max_value字节的文件。

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

(点击这里阅读我关于绩效的详细回答)

其他回答

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

不同之处在于它返回的是文件条目而不是名称。在一些操作系统上,比如windows,这意味着你不需要os.path。isdir/file来知道它是否是一个文件,这节省了CPU时间,因为在Windows中扫描dir时stat已经完成了:

使用实例列出目录并打印大于max_value字节的文件。

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

(点击这里阅读我关于绩效的详细回答)

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

一个方法:

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

另一种方法:

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

这里有一些例子。

通配符匹配操作符。上面的Glob方法不会列出隐藏文件。

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

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

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

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

Path.iterdir()返回一个迭代器,它可以很容易地转换为一个列表:

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

下面的代码将列出目录和目录下的文件。另一个是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)