獲取 Python 中的文件和目錄名稱列表。

商業

要在 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']