Python编写一个简单的文件比对工具
发布时间:2023-12-04 09:52:12
下面是一个简单的文件比对工具的Python代码。这个工具可以比较两个文件的内容并输出不同之处。
def compare_files(file1, file2):
with open(file1, 'r') as f1, open(file2, 'r') as f2:
lines1 = f1.readlines()
lines2 = f2.readlines()
diff_lines = []
for i, (line1, line2) in enumerate(zip(lines1, lines2)):
if line1 != line2:
diff_lines.append((i+1, line1.strip(), line2.strip()))
if len(lines1) > len(lines2):
for i in range(len(lines2), len(lines1)):
diff_lines.append((i+1, lines1[i].strip(), ''))
elif len(lines1) < len(lines2):
for i in range(len(lines1), len(lines2)):
diff_lines.append((i+1, '', lines2[i].strip()))
return diff_lines
if __name__ == "__main__":
file1 = input("请输入 个文件的路径:")
file2 = input("请输入第二个文件的路径:")
differences = compare_files(file1, file2)
if len(differences) == 0:
print("文件内容相同")
else:
print("文件内容不同:")
for i, (line_num, line1, line2) in enumerate(differences):
if line1 == '':
print("新增行 {}: {}".format(line_num, line2))
elif line2 == '':
print("第 {} 行已删除".format(line_num))
else:
print("第 {} 行: {} -> {}".format(line_num, line1, line2))
上述代码中的compare_files函数接受两个文件的路径作为参数,并返回一个包含差异的列表。该函数的实现方式是逐行读取两个文件的内容并逐行比较,如果两行不相等,则将差异的行添加到一个列表中。最后,函数还会处理两个文件行数不一致的情况,将多出的行添加到差异列表中。
在主程序中,用户通过命令行输入两个文件的路径,然后调用compare_files函数进行文件比较。如果没有差异,则打印"文件内容相同",否则打印差异的行及其对应的行号。
下面是一个使用例子:
请输入 个文件的路径:file1.txt 请输入第二个文件的路径:file2.txt 文件内容不同: 第 3 行: Hello -> Hi 第 5 行已删除 新增行 6: Goodbye
在上述例子中,file1.txt和file2.txt这两个文件的内容有差异,第3行的内容从"Hello"变成了"Hi",第5行被删除,而第6行则是新增加的。
