Python 如何获取文件夹下所有文件
简介
在 Python 编程中,经常需要对一个文件夹下的所有文件进行操作,例如遍历文件列表、读取文件内容、复制或移动文件等。然而,如何快速地获取文件夹下的所有文件呢?本文将介绍几种不同的方法来实现这一功能。
方法一:使用 os
模块
Python 的 os
模块提供了一些与操作系统交互的函数,其中的 listdir
函数可以用来获取指定路径下的所有文件和文件夹。下面是一个示例代码:
import os
def get_all_files(folder_path):
file_list = []
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
if os.path.isfile(file_path):
file_list.append(file_path)
return file_list
在上面的代码中,get_all_files
函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。首先,我们使用 os.listdir
函数获取指定文件夹下的所有文件和文件夹名称列表。然后,通过 os.path.join
函数将文件夹路径和文件(或文件夹)名称连接起来,得到完整的文件(或文件夹)路径。最后,通过 os.path.isfile
函数判断该路径是否为一个文件,如果是文件,则将其添加到 file_list
列表中。
以下是使用上述代码获取文件夹下所有文件的示例:
folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
print(file_path)
输出结果类似于:
/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...
方法二:使用 glob
模块
Python 的 glob
模块提供了一个函数 glob
,可以根据指定的路径模式匹配文件路径。下面是一个示例代码:
import glob
def get_all_files(folder_path):
file_list = glob.glob(folder_path + '/**/*', recursive=True)
return file_list
在上面的代码中,get_all_files
函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。通过使用 glob.glob
函数,我们可以通过指定的路径模式 folder_path + '/**/*'
来匹配文件夹下的所有文件和文件夹。其中 '**'
表示匹配任意多级子文件夹,'*'
表示匹配当前级别的文件和文件夹。
以下是使用上述代码获取文件夹下所有文件的示例:
folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
print(file_path)
输出结果类似于:
/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...
方法三:使用 Path
对象(Python 3.4+)
Python 3.4 引入了一个新的模块,名为 pathlib
,提供了一个更面向对象的方式来操作文件系统路径。使用 Path
对象,可以更简洁地获取文件夹下的所有文件。下面是一个示例代码:
from pathlib import Path
def get_all_files(folder_path):
file_list = [str(file) for file in Path(folder_path).rglob('*')]
return file_list
在上面的代码中,get_all_files
函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。首先,使用 Path
函数创建一个 Path
对象,传入文件夹路径作为参数。然后,通过调用 rglob
方法,并传入 '*'
作为通配符参数,可以递归地遍历文件夹下的所有文件和文件夹。最后,通过列表推导式将 Path
对象转换为字符串路径,并将其添加到 file_list
列表中。
以下是使用上述代码获取文件夹下所有文件的示例:
folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
print(file_path)
输出结果类似于:
/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...
总结
本文介绍了三种不同的方法来获取文件夹下的所有文件。使用 os
模块的 listdir
函数可以实现基本的文件获取功能,但需要手动判断每个路径是否为文件。使用 glob
模块的 glob
函数可以更方便地匹配文件路径,支持通配符模式。使用 pathlib
模块的 Path
对象可以提供更简洁的面向对象的方式来操作文件系统路径。