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에 새롭게 추가된 줄을 나타냅니다. 반면 공백으로 시작하는 Hello와 People처럼 접두 기호가 없는 줄은 두 파일에서 변경 없이 그대로 유지된 공통 부분입니다. 이처럼 difflib를 활용하면 별도의 외부 도구 없이 Python 코드만으로 두 파일의 차이를 명확하게 파악할 수 있습니다.