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

Python에서 두 개의 파일을 한 줄씩 비교하는 방법

Python 표준 라이브러리에는 문자열이나 파일 간의 차이점(diff)을 찾는 작업을 위해 특별히 만들어진 difflib 모듈이 포함되어 있습니다. 이 모듈의 unified_diff() 함수를 호출하면 두 파일의 차이를 통합 diff 형식으로 손쉽게 확인할 수 있습니다.

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

file1:
Hello
People
of
the
world

file2:
Hello
People
from
India

예제 코드

두 파일의 차이를 비교하려면 아래와 같은 코드를 사용합니다.

import difflib

with open('file1') as f1:
    f1_lines = f1.readlines()
with open('file2') as f2:
    f2_lines = f2.readlines()

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

참고: unified_diff() 함수는 줄 단위로 구성된 시퀀스(리스트 등)를 입력받습니다. 따라서 파일 전체를 하나의 문자열로 읽는 대신 readlines()를 사용해 각 줄을 리스트의 요소로 읽어들이는 것이 좋습니다. 또한 lineterm='' 옵션을 지정하면 출력 과정에서 줄바꿈 문자가 중복되는 것을 방지할 수 있습니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

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

출력 결과에서 -(마이너스)로 시작하는 줄은 file1에만 있고 file2에서는 삭제된 줄을 의미하며, +(플러스)로 시작하는 줄은 file2에 새롭게 추가된 줄을 나타냅니다. 반면 공백으로 시작하는 HelloPeople처럼 접두 기호가 없는 줄은 두 파일에서 변경 없이 그대로 유지된 공통 부분입니다. 이처럼 difflib를 활용하면 별도의 외부 도구 없이 Python 코드만으로 두 파일의 차이를 명확하게 파악할 수 있습니다.