Python遍历两个文件夹

在日常的开发工作中,我们经常需要遍历文件夹来查找特定的文件或者对文件进行处理。Python提供了多种方法来遍历文件夹,本文将介绍如何使用Python遍历两个文件夹,并列出相同和不同的文件。

准备工作

在开始之前,我们需要准备两个文件夹,分别命名为folder1folder2。这两个文件夹中可以包含任意数量和类型的文件。

方法一:使用os.walk()

Python的标准库os中提供了walk()函数,可以用于遍历文件夹。下面是使用os.walk()函数遍历两个文件夹,并打印出相同和不同的文件名的示例代码:

import os

folder1 = 'path/to/folder1'
folder2 = 'path/to/folder2'

# 获取folder1中的所有文件名
files1 = []
for dirpath, dirnames, filenames in os.walk(folder1):
    for filename in filenames:
        files1.append(filename)

# 获取folder2中的所有文件名
files2 = []
for dirpath, dirnames, filenames in os.walk(folder2):
    for filename in filenames:
        files2.append(filename)

# 打印相同的文件名
common_files = list(set(files1) & set(files2))
print("相同的文件名:")
for file in common_files:
    print(file)

# 打印不同的文件名
unique_files = list(set(files1) ^ set(files2))
print("不同的文件名:")
for file in unique_files:
    print(file)

上述代码首先使用os.walk()函数遍历folder1folder2中的文件夹,并将文件名保存在files1files2列表中。然后,使用set数据结构求取两个列表的交集,即相同的文件名,将其保存在common_files列表中。最后,使用set数据结构求取两个列表的差集,即不同的文件名,将其保存在unique_files列表中,并打印出结果。

方法二:使用os.scandir()

除了os.walk()函数,Python的标准库os中还提供了scandir()函数,可以更高效地遍历文件夹。下面是使用os.scandir()函数遍历两个文件夹,并列出相同和不同的文件名的示例代码:

import os

folder1 = 'path/to/folder1'
folder2 = 'path/to/folder2'

# 获取folder1中的所有文件名
files1 = [entry.name for entry in os.scandir(folder1) if entry.is_file()]

# 获取folder2中的所有文件名
files2 = [entry.name for entry in os.scandir(folder2) if entry.is_file()]

# 打印相同的文件名
common_files = list(set(files1) & set(files2))
print("相同的文件名:")
for file in common_files:
    print(file)

# 打印不同的文件名
unique_files = list(set(files1) ^ set(files2))
print("不同的文件名:")
for file in unique_files:
    print(file)

上述代码使用os.scandir()函数遍历folder1folder2中的文件夹,并判断每个条目是否为文件,如果是文件则将其文件名保存在files1files2列表中。然后,使用set数据结构求取两个列表的交集,即相同的文件名,将其保存在common_files列表中。最后,使用set数据结构求取两个列表的差集,即不同的文件名,将其保存在unique_files列表中,并打印出结果。

总结

本文介绍了两种使用Python遍历两个文件夹的方法,分别是使用os.walk()函数和os.scandir()函数。这两种方法都可以实现相同的功能,只是实现的方式略有不同。在使用时,可以根据实际情况选择合适的方法。

希望本文能对你理解如何使用Python遍历两个文件夹有所帮助。如果有任何疑问或建议,欢迎留言讨论。

pie
title 文件夹中的