[파이썬] 파일 경로와 파일 비교

파일 작업은 프로그래밍에서 매우 일반적인 작업입니다. 파일을 읽고 쓰고 비교하는 것은 데이터 처리나 로깅과 같은 다양한 작업에서 필요합니다. 이번 글에서는 Python을 사용하여 파일 경로와 파일을 비교하는 방법에 대해 알아보겠습니다.

파일 경로 비교

파이썬에서 파일 경로 비교는 os.path 모듈을 사용합니다. 이 모듈에는 경로와 관련된 다양한 함수와 메서드가 포함되어 있습니다. 우리가 주로 사용할 함수는 os.path.abspath()os.path.normpath()입니다.

import os

# 절대 경로 포함한 파일 경로
path1 = os.path.abspath("file1.txt")
path2 = os.path.abspath("file2.txt")

# 정규화된 파일 경로
path3 = os.path.normpath("file1.txt")
path4 = os.path.normpath("file2.txt")

print(path1 == path2)  # True
print(path3 == path4)  # True

위의 예제에서 os.path.abspath() 함수를 사용하여 상대 경로를 절대 경로로 변환합니다. 이렇게 하면 운영 체제마다 다른 경로 표기법을 사용할 때도 일관성을 유지할 수 있습니다. os.path.normpath() 함수는 경로의 구성 요소를 정규화하여 일관된 형식으로 표현합니다.

파일 비교

두 개의 파일을 비교하는 가장 간단한 방법은 파일의 내용을 읽고 비교하는 것입니다. Python에서 파일을 읽으려면 open() 함수를 사용합니다.

def compare_files(file1, file2):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        content1 = f1.read()
        content2 = f2.read()

        if content1 == content2:
            print("파일이 동일합니다.")
        else:
            print("파일이 다릅니다.")

compare_files("file1.txt", "file2.txt")

위의 예제에서는 with 문을 사용하여 파일을 열고 자동으로 닫습니다. read() 메서드를 사용하여 파일의 내용을 읽습니다. 그런 다음 비교하여 파일이 동일한지 여부를 확인합니다.

또는 파일을 바이트 단위로 읽어 비교할 수도 있습니다:

def compare_files_binary(file1, file2):
    with open(file1, 'rb') as f1, open(file2, 'rb') as f2:
        content1 = f1.read()
        content2 = f2.read()

        if content1 == content2:
            print("파일이 동일합니다.")
        else:
            print("파일이 다릅니다.")

compare_files_binary("file1.txt", "file2.txt")

위의 예제는 open() 함수에 rb 모드로 파일을 열어서 바이트 단위로 읽는 예입니다.

결론

Python을 사용하여 파일 경로와 파일을 비교하는 방법에 대해 살펴보았습니다. os.path 모듈을 사용하여 파일 경로를 비교할 수 있으며, open() 함수를 사용하여 파일의 내용을 읽고 비교할 수 있습니다. 이러한 기능을 사용하여 파일 작업을 보다 효율적으로 수행할 수 있습니다.

참고 자료: