Pythonで2つのファイルの違いを比較する方法は何ですか?

2つのファイルの違いを比較するには、以下の手順を使用します。

  1. 2つのファイルを開いて、それぞれの内容を1行ずつ読む。
  2. 各ファイルの内容を2つの異なるリストに保存します。
  3. この2つのリストを比較するために、difflibモジュールのSequenceMatcherクラスを使用します。
  4. get_opcodes()メソッドを使用して、リストを別のリストに変換する方法を説明した操作コードリストを取得します。
  5. 操作コードリストを走査し、各操作コードのタイプをチェックする。
  6. 操作コードが”replace”の場合、2つのファイルはその行で異なることを意味します。
  7. もし操作コードのタイプが「delete」の場合、最初のファイルにはその行に余分な内容があることを示します。
  8. もし操作コードの種類が「insert」であれば、第二のファイルにはその行に追加の内容があることを意味します。
  9. 打印出不同的行,并可以将它们保存到一个新的文件中。

以下はサンプルコードです。

import difflib

def compare_files(file1, file2, output_file):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        lines1 = f1.readlines()
        lines2 = f2.readlines()

    differ = difflib.SequenceMatcher(None, lines1, lines2)
    opcodes = differ.get_opcodes()

    with open(output_file, 'w') as output:
        for opcode, start1, end1, start2, end2 in opcodes:
            if opcode == 'replace':
                output.write(f'Different line in file1: {lines1[start1:end1]}')
                output.write(f'Different line in file2: {lines2[start2:end2]}')
            elif opcode == 'delete':
                output.write(f'Extra line in file1: {lines1[start1:end1]}')
            elif opcode == 'insert':
                output.write(f'Extra line in file2: {lines2[start2:end2]}')

file1 = 'file1.txt'
file2 = 'file2.txt'
output_file = 'diff.txt'

compare_files(file1, file2, output_file)

上記のコードは、file1.txtとfile2.txtの内容を比較し、異なる行をdiff.txtファイルに保存します。必要に応じて、ファイル名やパスを変更できます。

bannerAds