下面为您详细讲解Python实现比较两个文件夹中代码变化的方法的完整攻略。
步骤一:导入必要的库
Python的文件操作和字符串处理需要使用os和re两个库,而比较文件差异需要使用difflib库。
import os
import re
import difflib
步骤二:获取文件列表
通过os库的listdir函数获取两个文件夹中的所有文件列表,并使用正则表达式筛选出以.py结尾的Python文件。
folder1 = "/path/to/folder1"
folder2 = "/path/to/folder2"
file_list1 = []
for file_name in os.listdir(folder1):
if re.search(r"\.py$", file_name):
file_list1.append(file_name)
file_list2 = []
for file_name in os.listdir(folder2):
if re.search(r"\.py$", file_name):
file_list2.append(file_name)
步骤三:比较文件差异
使用difflib库的Differ类比较两个文件的差异,并将差异结果保存到列表中。
diff_results = []
for file_name in file_list1:
if file_name in file_list2:
with open(os.path.join(folder1, file_name), "r") as f1, open(os.path.join(folder2, file_name), "r") as f2:
diff = difflib.Differ().compare(f1.read().splitlines(), f2.read().splitlines())
diff_results.append((file_name, "\n".join(diff)))
步骤四:输出比较结果
将比较结果逐一输出到控制台或保存到文件。
for file_name, diff in diff_results:
print(file_name)
print(diff)
下面是完整的示例代码:
import os
import re
import difflib
folder1 = "/path/to/folder1"
folder2 = "/path/to/folder2"
file_list1 = []
for file_name in os.listdir(folder1):
if re.search(r"\.py$", file_name):
file_list1.append(file_name)
file_list2 = []
for file_name in os.listdir(folder2):
if re.search(r"\.py$", file_name):
file_list2.append(file_name)
diff_results = []
for file_name in file_list1:
if file_name in file_list2:
with open(os.path.join(folder1, file_name), "r") as f1, open(os.path.join(folder2, file_name), "r") as f2:
diff = difflib.Differ().compare(f1.read().splitlines(), f2.read().splitlines())
diff_results.append((file_name, "\n".join(diff)))
for file_name, diff in diff_results:
print(file_name)
print(diff)
例如,两个文件夹folder1和folder2中都存在test.py文件,分别写入以下内容:
# folder1/test.py
print("Hello, world!")
# folder2/test.py
print("Hello, Python!")
运行上述代码会输出以下比较结果:
test.py
- print("Hello, world!")
? ^
+ print("Hello, Python!")
? ^
如果将folder2中的test.py改为以下内容:
# folder2/test.py
print("Hello, world!")
则比较结果为空,说明两个文件相同。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现比较两个文件夹中代码变化的方法 - Python技术站