欢迎访问宙启技术站
智能推送

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.txtfile2.txt这两个文件的内容有差异,第3行的内容从"Hello"变成了"Hi",第5行被删除,而第6行则是新增加的。