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

Pau*_*ite 162 python path

不能很难,但我有心理障碍.

use*_*461 232

import os
os.listdir("path") # returns list
Run Code Online (Sandbox Code Playgroud)

  • 并且不传递任何参数将列出 CWD 的内容: `os.listdir()` = `os.listdir('.')` (2认同)

Tre*_*ner 48

一种方式:

import os
os.listdir("/home/username/www/")
Run Code Online (Sandbox Code Playgroud)

另一种方式:

glob.glob("/home/username/www/*")
Run Code Online (Sandbox Code Playgroud)

这里的例子.

上述glob.glob方法不会列出隐藏文件.


Mar*_*nen 35

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)
Run Code Online (Sandbox Code Playgroud)


Tuo*_*nen 18

glob.glob或者os.listdir会这样做.


zda*_*dav 14

os模块处理所有这些东西.

os.listdir(path)

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

可用性:Unix,Windows.


jpy*_*ams 8

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

from pathlib import Path
for path in Path('.').iterdir():
    print(path)
Run Code Online (Sandbox Code Playgroud)

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

contents = list(Path('.').iterdir())
Run Code Online (Sandbox Code Playgroud)


Jea*_*bre 5

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

不同之处在于它返回文件条目而不是名称。在某些操作系统(例如 Windows)上,这意味着您不必os.path.isdir/file知道它是否是文件,并且这可以节省 CPU 时间,因为stat在 Windows 中扫描 dir 时已经完成了:

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

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

(在这里阅读我的基于性能的广泛答案)