如何在Python中迭代给定目录中的文件?
有时我们需要处理一组文件,例如将它们合并或提取其内容。在Python中,我们可以使用迭代器循环来遍历文件夹中所有文件。它有时比手动打开并处理每个文件更方便。
遍历目录
在Python中遍历目录以查找文件相对容易。 os
模块提供多个用于操作文件系统的函数。os.listdir()
函数返回给定目录中的所有文件和目录。下面的代码演示如何使用os.listdir()
函数来打印目录中的所有文件:
import os
directory = '/path/to/your/folder'
for filename in os.listdir(directory):
print(filename)
请注意,在上面的代码中,我们只打开了一个文件夹,但是我们可以循环嵌套来处理层级更深的文件夹。
for dirpath, dirnames, filenames in os.walk(directory):
print(f"Found directory: {dirpath}")
for file_name in filenames:
print(file_name)
上面的代码将输出传递给os.walk()
函数的所有文件名。
过滤文件
在某些情况下,我们只想迭代特定类型的文件。使用os.path.splitext()
函数将文件名和扩展名分开。下面的代码将列出给定目录中的所有txt文件:
import os
directory = '/path/to/your/folder'
for filename in os.listdir(directory):
if filename.endswith('.txt'):
print(filename)
我们还可以使用列表推导来执行过滤。为了取得更好的性能,我们可以使用os.scandir()
函数来代替os.listdir()
函数:
import os
directory = '/path/to/your/folder'
files = [f.name for f in os.scandir(directory) if f.is_file() and f.name.endswith('.txt')]
print(files)
总结
在Python中,我们可以使用os.listdir()
和os.walk()
函数遍历目录,并使用os.path.splitext()
和列表推导来过滤文件。通过这些方法,我们可以轻松地迭代特定目录中的文件,并处理您需要的数据。