要在 Python 中獲取文件和目錄名稱(文件夾名稱)的列表,請使用 os 模塊函數 os.listdir()。
os.listdir(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 模塊獲取文件和目錄列表,該模塊可以將路徑作為對象進行操作。像上面的 glob 一樣,它也可以有條件地和遞歸地使用。
獲取文件名和目錄名的列表。
如果按原樣使用 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']