在Python中,获取当前py文件所在目录下的所有文件列表是一个常见的操作。这可以帮助开发者快速定位资源文件、检查目录结构或者进行自动化脚本编写。以下是一些高效的方法来实现这一功能。
方法一:使用os
模块
Python的os
模块提供了丰富的操作系统交互功能,其中包括获取文件列表的方法。
import os
def get_files_in_current_directory():
# 获取当前文件的绝对路径
current_file_path = os.path.abspath(__file__)
# 获取当前文件的目录
current_directory = os.path.dirname(current_file_path)
# 获取目录下的所有文件和文件夹
files = os.listdir(current_directory)
# 过滤出文件,排除文件夹
files = [file for file in files if os.path.isfile(os.path.join(current_directory, file))]
return files
# 调用函数并打印结果
files_list = get_files_in_current_directory()
print(files_list)
这段代码首先获取当前文件的绝对路径,然后通过os.path.dirname
获取当前文件的目录。接着使用os.listdir
获取目录下的所有文件和文件夹名称,最后通过列表推导式过滤出文件,排除文件夹。
方法二:使用glob
模块
glob
模块提供了一个更高级别的接口来获取符合特定模式的文件列表。
import glob
def get_files_in_current_directory_with_glob():
# 获取当前文件的目录
current_directory = os.path.dirname(os.path.abspath(__file__))
# 使用glob获取当前目录下的所有文件
files = glob.glob(os.path.join(current_directory, '*'))
# 过滤出文件,排除文件夹
files = [file for file in files if os.path.isfile(file)]
return files
# 调用函数并打印结果
files_list = get_files_in_current_directory_with_glob()
print(files_list)
这里使用了glob.glob
来匹配当前目录下的所有文件。*
是一个通配符,代表匹配任意字符。然后通过列表推导式过滤出文件。
方法三:使用pathlib
模块
Python 3.4及以上版本引入了pathlib
模块,它提供了一个面向对象的方式来处理文件系统路径。
from pathlib import Path
def get_files_in_current_directory_with_pathlib():
# 获取当前文件的路径对象
current_file_path = Path(__file__)
# 获取当前文件的目录
current_directory = current_file_path.parent
# 获取目录下的所有文件
files = current_directory.glob('*')
# 过滤出文件,排除文件夹
files = [file for file in files if file.is_file()]
return [file.name for file in files]
# 调用函数并打印结果
files_list = get_files_in_current_directory_with_pathlib()
print(files_list)
这里使用了pathlib
模块的Path
对象和glob
方法来获取当前目录下的所有文件。is_file
方法用于检查路径是否指向一个文件。
总结
以上三种方法都可以用来获取当前py文件所在目录下的所有文件列表。选择哪种方法取决于你的个人喜好和具体需求。os
模块和glob
模块适用于大多数情况,而pathlib
模块则提供了更现代、面向对象的方法。