[파이썬] 파이썬 2와 파이썬 3의 파일 입출력 및 바이너리 처리 차이

파이썬 2와 파이썬 3는 많은 면에서 유사하지만, 파일 입출력 및 바이너리 처리에서 약간의 차이가 있습니다. 이 글에서는 이러한 차이를 살펴보고 간단한 예제 코드를 사용하여 설명하겠습니다.

파일 입출력

파이썬 2에서는 open 함수를 사용하여 파일을 열고, read, write 메서드를 사용하여 파일을 읽거나 쓸 수 있었습니다. 하지만 파이썬 3에서는 open 함수의 기본 인코딩이 유니코드(UTF-8)로 변경되었습니다.

따라서 파이썬 3에서 파일을 열 때는 다음과 같이 인코딩을 명시적으로 지정해야 합니다:

file = open("file.txt", encoding="utf-8", mode="r")

파일을 쓸 때도 인코딩을 명시적으로 지정해야 합니다:

file = open("file.txt", encoding="utf-8", mode="w")
file.write("안녕하세요")

바이너리 처리

파이썬 2에서는 파일을 바이너리 모드로 열 때 'b'를 모드 문자열에 추가하였습니다. 예를 들어, 바이너리 모드로 파일을 열 때는 다음과 같이 사용합니다:

file = open("file.bin", "rb")

반면에 파이썬 3에서는 기본적으로 바이너리 모드로 파일을 엽니다. 따라서 'b'를 별도로 명시할 필요가 없습니다:

file = open("file.bin", "r")

파일을 쓸 때도 마찬가지입니다. 파이썬 2에서는 바이너리 모드로 파일을 쓸 때 'b'를 추가해야 하지만, 파이썬 3에서는 추가하지 않아도 됩니다.

file = open("file.bin", "wb")
file.write(b"\x01\x02\x03")

결론

위에서 살펴본 바와 같이, 파이썬 2와 파이썬 3 사이에는 파일 입출력 및 바이너리 처리에 약간의 차이가 있습니다. 이러한 차이를 이해하고 적절하게 코드를 작성하면 파이썬 2와 파이썬 3 모두에서 잘 작동하는 파일 처리 프로그램을 개발할 수 있습니다.