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

如何在Python中列出目录的内容?,python,path,Python,Path,这不难,但我有精神障碍。glob.glob或os.listdir就可以了。处理所有这些事情 import os os.listdir("path") # returns list os.listdir(路径) 返回一个列表,其中包含路径给定的目录中的条目名称。 列表的顺序是任意的。它不包括特殊条目“.”和 “..”即使它们存在于目录中 可用性:Unix、Windows 单向: import os os.listdir("/home/username/www/") : 上面的glob.glo

这不难,但我有精神障碍。

glob.glob
os.listdir
就可以了。

处理所有这些事情

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

返回一个列表,其中包含路径给定的目录中的条目名称。 列表的顺序是任意的。它不包括特殊条目“.”和 “..”即使它们存在于目录中

可用性:Unix、Windows

单向:

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

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

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

从pathlib导入路径
打印(*路径(“/home/username/www/”).iterdir(),sep=“\n”)

如果需要递归,可以使用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)

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

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

Path.iterdir()
返回一个迭代器,可以轻松地将其转换为
列表

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

自Python 3.5以来,您可以使用
os.scandir

区别在于它返回的是文件项而不是名称。在某些操作系统(如windows)上,这意味着您不必
os.path.isdir/file
就可以知道它是否是文件,这节省了CPU时间,因为在windows中扫描目录时,
stat
已经完成:

列出目录并打印大于
max\u值
字节的文件的示例:

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

(阅读我的一个基于性能的详细答案)

当与
glob.glob(“/home/username/www/*”
)一起使用时,glob.glob是否会列出隐藏文件(我想你是指Unix文件系统上下文中的
.XYZ
文件)?是的,我是指以点开头的文件。您给出的示例适用于匹配隐藏文件(并且仅适用于隐藏文件)。我刚刚导入了glob并使用了glob.glob(r'c:\users'),但它只返回
['c:\\users']
@Musixauce3000:您需要执行
glob.glob(r'c:\users\*')
(glob它实际上并不列出目录,而是展开星号和完成类似任务的星号)。
import glob
ENTER
glob.glob(r'c:\users')
ENTER似乎只返回
['c:\\users']
。这是为什么?我想使用glob.glob,因为正如其他用户所指出的,它应该返回目录的内容,同时也忽略隐藏的文件。这一点很重要。因为必须使用
glob
glob.glob(r'c:\users\*')
contents = list(Path('.').iterdir())
for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))