1、os模块
1)os.listdir()
os.listdir()
是Python标准库中os模块提供的一个函数,用于返回指定目录中所有的文件和文件夹列表。该函数接受一个路径作为参数,并返回该路径下的所有条目的名称列表。
from os import listdir from os.path import isfile, join onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
或
import os def list_files_and_folders(directory): for entry in os.listdir(directory): # 拼接完整的路径 full_path = os.path.join(directory, entry) if os.path.isdir(full_path): print(f"文件夹:{entry}") else: print(f"文件:{entry}") # 列出当前目录下所有文件和文件夹 current_directory = os.getcwd() list_files_and_folders(current_directory)
2)os.walk()
os.walk()是Python标准库中os模块提供的一个强大的函数,用于遍历目录中的所有文件和子目录。该函数返回一个生成器,可以递归地访问指定目录及其子目录下的所有文件和文件夹。
os.walk(top, topdown=True, onerror=None, followlinks=False):
参数说明:
- top:需要遍历的顶层目录路径。
- topdown:可选参数,默认为
True
,表示遍历顺序是自顶向下,如果设置为False
,遍历顺序将是自底向上。 - onerror:可选参数,默认为
None
,用于处理遍历过程中的错误。 - followlinks:可选参数,默认为
False
,如果设置为True
,则会遍历符号链接指向的目录。
import os # 指定目录路径 directory_path = '/path/to/your/directory' # 使用os.walk()遍历目录 for root, dirs, files in os.walk(directory_path): # 打印当前目录 print("当前目录:", root) # 打印当前目录下的子目录 for dir_name in dirs: print("子目录:", os.path.join(root, dir_name)) # 打印当前目录下的文件 for file_name in files: print("文件:", os.path.join(root, file_name))
2、glob模块
glob
是Python标准库中的一个模块,用于查找符合特定规则的文件路径名。它提供了简单且灵活的文件匹配功能,可以帮助你快速找到指定目录下符合特定模式的文件。
import glob # 指定目录路径 directory_path = '/path/to/your/directory' # 查找目录中的所有文件 files = glob.glob(directory_path + '/*') # 查找目录中的所有文件夹 folders = glob.glob(directory_path + '/*/') # 打印文件列表 print("文件列表:") for file_path in files: print("文件:", file_path) # 打印文件夹列表 print("\n文件夹列表:") for folder_path in folders: print("文件夹:", folder_path)
3、pathlib模块
pathlib
是Python标准库中的一个模块,用于处理文件路径和文件系统操作。它提供了一种更现代和面向对象的方式来处理文件和目录路径,相比于旧的os.pat
h模块,使用pathlib
更加简洁、直观。在Python 3.4及以上版本中,pathlib
模块是内置的,无需安装其他依赖。
from pathlib import Path def list_files_and_folders(directory_path): # 创建目录路径对象 dir_path = Path(directory_path) # 列出目录下的所有文件和文件夹 files = [f for f in dir_path.iterdir() if f.is_file()] folders = [f for f in dir_path.iterdir() if f.is_dir()] return files, folders # 要列出的目录路径 directory_path = '/path/to/your/directory' # 调用函数列出目录中的所有文件和文件夹 files, folders = list_files_and_folders(directory_path) # 打印结果 print("目录中的文件:") for file in files: print(file) print("\n目录中的文件夹:") for folder in folders: print(folder)
或
from pathlib import Path folder = '/foo' [f for f in Path(folder).glob('*') if f.is_file()]