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()]