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

Python에서 파일 읽기와 쓰기: write()·read() 메서드 완벽 정리

파이썬의 파일 객체(file object)는 파일을 손쉽게 다룰 수 있도록 다양한 접근 메서드를 제공합니다. 그중 가장 기본이 되는 write()read() 메서드를 사용해 파일에 내용을 기록하고 읽어오는 방법을 살펴보겠습니다.

write() 메서드

write() 메서드는 열려 있는 파일에 문자열을 기록합니다. 파이썬 문자열은 단순한 텍스트뿐 아니라 바이너리 데이터도 포함할 수 있다는 점이 중요합니다.

또한 write() 메서드는 문자열 끝에 줄바꿈 문자('\n')를 자동으로 추가하지 않습니다. 줄바꿈이 필요하다면 직접 문자열에 포함시켜야 합니다.

문법

fileObject.write(string)

매개변수로 전달되는 값은 열린 파일에 기록할 내용입니다.

예제

# 파일 열기
fo = open("foo.txt", "w")
fo.write("Python is a great language.\nYeah its great!!\n")
# 열었던 파일 닫기
fo.close()

위 코드를 실행하면 foo.txt 파일이 생성되고, 지정한 내용이 파일에 기록된 뒤 파일이 닫힙니다. 생성된 파일을 열어 보면 다음과 같은 내용이 들어 있습니다.

Python is a great language.
Yeah its great!!

참고로 파일 작업이 끝나면 반드시 close()로 파일을 닫아야 리소스 누수를 막을 수 있습니다. 더 안전한 방법은 with 문을 사용하는 것입니다. with 문은 블록이 끝나면 파일을 자동으로 닫아 줍니다.

with open("foo.txt", "w") as fo:
    fo.write("Python is a great language.\nYeah its great!!\n")

read() 메서드

read() 메서드는 열려 있는 파일에서 문자열을 읽어옵니다. 앞서 언급했듯이 파이썬 문자열은 텍스트 데이터 외에 바이너리 데이터도 담을 수 있습니다.

문법

fileObject.read([count])

여기서 count 매개변수는 열린 파일에서 읽어올 바이트 수를 의미합니다. 이 메서드는 파일의 처음부터 읽기를 시작하며, count가 생략되면 파일의 끝(EOF)까지 최대한 많이 읽으려고 시도합니다.

예제

앞에서 만든 foo.txt 파일을 예로 들어 보겠습니다.

# 파일 열기
fo = open("foo.txt", "r+")
data = fo.read(10)
print("읽어온 문자열 :", data)
# 파일 닫기
fo.close()

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

읽어온 문자열 : Python is 

파일의 처음 10바이트만큼 읽어 "Python is"라는 문자열이 반환된 것을 확인할 수 있습니다. 이처럼 count 값을 조절하면 원하는 길이만큼 파일 내용을 나누어 읽을 수 있습니다.