要获得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']