from os import listdir from os.path import isfile, join mypath = '.'# 当前目录 onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] print(onlyfiles)
2. 使用os.walk()
1 2 3 4 5 6 7
from os import walk mypath = '.' f = [] for (dirpath, dirnames, filenames) in walk(mypath): f.extend(filenames) break print(f)
3. 使用glob模块
1 2
import glob print(glob.glob("/home/adam/*"))
4. 使用pathlib模块
1 2 3
import pathlib flist = [p for p in pathlib.Path('.').iterdir() if p.is_file()] print(flist)
5. 使用os.scandir()
1 2 3
import os x = [f.name for f in os.scandir() if f.is_file()] print(x)
核心代码
以下是一个完整的示例,展示了如何使用os.walk()递归地列出目录下的所有文件:
1 2 3 4 5 6 7 8 9 10 11 12
import os
defget_filepaths(directory): file_paths = [] for root, directories, files in os.walk(directory): for filename in files: filepath = os.path.join(root, filename) file_paths.append(filepath) return file_paths