Python 读取文件夹
简介
在处理文件相关的任务时,经常需要读取文件夹中的文件列表。Python 提供了多种方法来读取文件夹,本文将介绍常用的几种方式,并给出示例代码。
os 模块
Python 的 os 模块提供了一系列用于操作文件和目录的函数。其中,os.listdir()
函数可以用于获取指定路径下的所有文件和文件夹的名称列表。
示例代码如下:
import os
def get_files_in_folder(folder_path):
"""
获取文件夹下的所有文件名
"""
files = os.listdir(folder_path)
return files
folder_path = "./example_folder"
files = get_files_in_folder(folder_path)
print(files)
运行结果如下:
['file1.txt', 'file2.txt', 'sub_folder']
上述代码定义了一个函数 get_files_in_folder()
,该函数接受一个文件夹路径作为参数,然后使用 os.listdir()
获取该文件夹下的所有文件和文件夹的名称列表,并返回结果。
在示例中,文件夹路径为 ./example_folder
,返回的文件列表包含了两个文件 file1.txt
和 file2.txt
,以及一个子文件夹 sub_folder
。
需要注意的是,返回的文件列表只包含文件和文件夹的名称,并不包含完整的路径。如果需要获取完整的文件路径,可以使用 os.path.join()
函数来拼接路径。
glob 模块
除了使用 os 模块的 os.listdir()
函数外,还可以使用 glob 模块来读取文件夹。glob 模块提供了更便捷的方式来匹配文件路径。
glob.glob()
函数可以接受一个文件路径的模式作为参数,并返回匹配该模式的所有文件路径列表。
示例代码如下:
import glob
def get_files_with_pattern(folder_path, pattern):
"""
根据模式获取文件夹下的文件名
"""
files = glob.glob(os.path.join(folder_path, pattern))
return files
folder_path = "./example_folder"
pattern = "*.txt"
files = get_files_with_pattern(folder_path, pattern)
print(files)
运行结果如下:
['./example_folder/file1.txt', './example_folder/file2.txt']
上述代码定义了一个函数 get_files_with_pattern()
,该函数接受一个文件夹路径和一个模式作为参数,通过调用 glob.glob()
函数来获取与该模式匹配的文件路径,并返回结果。
在示例中,文件夹路径为 ./example_folder
,模式为 *.txt
,返回的文件列表只包含与模式匹配的文件路径。
pathlib 模块
Python 3.4 版本引入了 pathlib 模块,该模块提供了更直观和面向对象的方式来操作文件和目录路径。
通过使用 pathlib 模块,可以方便地获取文件夹下的所有文件。
示例代码如下:
from pathlib import Path
def get_files_in_folder(folder_path):
"""
获取文件夹下的所有文件名
"""
path = Path(folder_path)
files = [str(file) for file in path.iterdir() if file.is_file()]
return files
folder_path = "./example_folder"
files = get_files_in_folder(folder_path)
print(files)
运行结果如下:
['example_folder/file1.txt', 'example_folder/file2.txt']
上述代码定义了一个函数 get_files_in_folder()
,该函数接受一个文件夹路径作为参数,首先通过 Path()
函数将路径转换为 pathlib.Path 对象,然后使用 iterdir()
方法获取文件夹下的所有路径。
通过列表推导式,筛选出路径为文件的项,并使用 str()
函数将路径对象转换为字符串。
在示例中,文件夹路径为 ./example_folder
,返回的文件列表包含了两个文件路径。
总结
Python 提供了多种方法来读取文件夹,其中常用的有 os 模块、glob 模块和 pathlib 模块。
使用 os.listdir()
函数可以获取文件夹下的所有文件和文件夹的名称列表,使用 glob.glob()
函数可以根据模式来匹配文件路径,使用 pathlib 模块可以以面向对象的方式获取文件夹下的所有文件。
根据实际需求,选择适合自己的方法来读取文件夹,并根据需要进行进一步的处理和操作。