获取Python中的文件和目录名列表。

商业

要获得Python中的文件和目录名(文件夹名)的列表,可以使用os模块的函数os.listdir()。

os.listdir(path='.')
返回一个包含path指定的目录中的条目名称的列表。
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

os模块包含在标准库中,不需要安装。然而,”导入 “是必需的。

这里提供了以下信息。

  • 获得一个文件和目录名称的列表。
  • 只获取一个文件名的列表
  • 只获取一个目录名称的列表

下面是一个文件(目录)结构的例子。

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

除了os.listdir(),你还可以使用glob模块来获取文件和目录名(文件夹名)的列表。glob允许你使用通配符(*)等指定条件,并递归地包括子目录。

在Python 3.4及以后的版本中,也可以使用pathlib模块获得文件和目录的列表,它可以把路径作为对象进行操作。像上面的globs一样,它也可以有条件地和递归地使用。

获得一个文件和目录名称的列表。

如果你按原样使用os.listdir(),它将返回一个文件和目录名的列表。

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

你得到的是一个路径字符串的列表。

只获取一个文件名的列表

如果你想得到一个只有文件名的列表,使用os.path.isfile()函数来确定路径是否是一个文件。只传递文件名作为os.path.isfile()函数的参数是不行的,所以要传递完整的路径,如下所示。
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

只获取一个目录名称的列表

如果你想只得到一个目录名的列表,以同样的方式使用os.path.isdir()。

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']
Copied title and URL