Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 두 파일의 차이점을 비교하는 방법 – difflib 완벽 가이드

파이썬 표준 라이브러리에는 문자열이나 파일 간의 차이점(diff)을 찾기 위해 특별히 만들어진 모듈이 있습니다. 바로 difflib입니다. 이 모듈의 unified_diff 함수를 호출하면 별도의 외부 도구 없이도 두 파일의 차이를 손쉽게 확인할 수 있습니다.

예제: 비교할 두 파일 준비하기

예를 들어 다음과 같은 내용을 담고 있는 두 개의 파일, file1과 file2가 있다고 가정해 보겠습니다.

file1:
Hello
People
of
the
world

file2:
Hello
People
from
India

차이점을 계산하는 코드

두 파일의 차이를 구하려면 아래와 같은 코드를 사용합니다. 파일 내용을 줄 단위 리스트로 읽어온 뒤 unified_diff에 전달하는 것이 핵심입니다.

import difflib

with open('file1') as f1:
    f1_text = f1.read().splitlines()
with open('file2') as f2:
    f2_text = f2.read().splitlines()

# 두 파일의 차이점을 찾아 출력합니다.
for line in difflib.unified_diff(f1_text, f2_text,
                                 fromfile='file1', tofile='file2',
                                 lineterm=''):
    print(line)

실행 결과

위 코드를 실행하면 다음과 같은 통합 diff(unified diff) 형식의 결과가 출력됩니다.

--- file1
+++ file2
@@ -1,5 +1,4 @@
 Hello
 People
-of
-the
-world
+from
+India

결과 해석하기

출력 결과는 유닉스 계열 시스템에서 널리 쓰이는 diff 형식과 동일하게 구성됩니다.

  • --- file1 / +++ file2: 비교 대상인 원본 파일과 수정된 파일의 이름을 나타냅니다.
  • @@ -1,5 +1,4 @@: 원본 파일의 1번째 줄부터 5줄, 수정된 파일의 1번째 줄부터 4줄이 변경 범위에 포함되었음을 의미합니다.
  • -로 시작하는 줄: 원본 파일(file1)에는 있지만 새 파일(file2)에서 삭제된 줄입니다.
  • +로 시작하는 줄: 새 파일(file2)에 추가된 줄입니다.
  • 공백으로 시작하는 줄: 두 파일에서 공통으로 존재하는, 변경되지 않은 줄입니다.

이처럼 difflib의 unified_diff 함수를 활용하면 코드 리뷰, 로그 비교, 설정 파일 검증 등 다양한 상황에서 두 파일의 변경 사항을 빠르고 정확하게 파악할 수 있습니다.