如何在Python中列出目录中的所有文件?
在Python中,使用os
模块可以方便地实现列出目录中的所有文件的功能。os
模块是Python中与操作系统交互的主要模块,提供了许多有用的方法。
阅读更多:Python 教程
列出目录中的所有文件
使用os
模块中的listdir()
方法可以列出指定目录中的所有文件和目录的名称,返回一个包含所有文件名称的列表。
示例代码如下:
import os
# 获取当前目录
path = os.getcwd()
# 列出指定目录中的所有文件
files = os.listdir(path)
# 输出所有文件名
for file in files:
print(file)
运行上述代码,会输出当前目录中的所有文件名。
注意:
listdir()
方法只会列出当前路径下的所有文件和目录的名称,不包括子目录中的内容。
列出目录中的所有文件和子目录
如果需要列出目录中的所有文件和子目录内容,可以使用os.walk()
方法。os.walk()
方法是一个目录遍历器,返回的是一个三元组(dirpath, dirnames, filenames)
。
dirpath
表示遍历的目录路径dirnames
表示遍历的目录下的所有子目录名称的列表filenames
表示遍历的目录下的所有文件名称的列表
示例代码如下:
import os
# 获取当前目录
path = os.getcwd()
# 遍历目录中的内容
for dirpath, dirnames, filenames in os.walk(path):
# 输出目录路径
print('Directory: ', dirpath)
# 输出子目录名称
for dirname in dirnames:
print('Subdirectory: ', dirname)
# 输出文件名称
for filename in filenames:
print('File: ', filename)
运行上述代码,会输出整个目录结构中的所有文件和子目录内容。
过滤指定类型的文件
如果只需要列出某一类型的文件,可以使用glob()
方法或者列表解析来实现。
使用glob()
方法可以匹配符合特定模式的文件名称,返回符合模式的所有文件名称的列表。示例代码如下:
import glob
# 获取当前目录
path = '*'
# 匹配所有txt文件
files = glob.glob(path + '/*.txt')
# 输出找到的txt文件名称
for file in files:
print(file)
上述代码会匹配当前目录中所有的.txt
文件,并且输出它们的文件名。glob()
方法中'*'
表示任意字符,表示匹配当前目录下的所有文件夹名称。因此path + '/*.txt'
表示在当前目录下搜索所有的.txt
文件。
使用列表解析也可以方便地筛选符合条件的文件。示例代码如下:
import os
# 获取当前目录
path = os.getcwd()
# 列出所有文件
files = os.listdir(path)
# 列出所有txt文件
txt_files = [file for file in files if file.endswith('.txt')]
# 输出所有txt文件名
for file in txt_files:
print(file)
上述代码先列出了所有的文件,再用列表解析过滤出所有的.txt
文件。if file.endswith('.txt')
表示只选择文件名以.txt
结尾的文件。
结论
os
模块提供了很多方法来方便地实现列出目录中的所有文件的功能,可以根据需求选择相应的方法。常用的方法有listdir()
和walk()
,可以使用列表解析或者glob()
方法来过滤指定类型的文件。