개발 블로그

[Python] 파일입출력 본문

Programming Language/Python

[Python] 파일입출력

draidev 2022. 3. 22. 02:51

Python의 파일입출력에 대해 알아보기 전에 utf-8에 대해 알아보고 싶다면 이 페이지를 참고하세요!!

 

Python 파일입출력은 기본적으로 open(), write(), close() 함수들로 이루어집니다.

그리고 with문을 통해서 close()함수를 생략할 수도 있습니다.

이제 하나하나 알아보겠습니다!

목차>

 

01  파일 생성하기

파일을 생성하기 open()함수를 사용합니다. open 함수는 다음과 같이 "파일 이름"과 "파일 열기 모드"를 입력값으로 받고 결괏값으로 파일 객체를 돌려줍니다. (encoding='utf-8'은 생략 가능합니다.)

파일 객체  = open(파일 이름, 파일 열기 모드)

(C언어를 배우면서 파일입출력을 처음 만났을때 파일이름 뒤에 확장자 .txt를 안적어줘서 헤맸던 기억이 나네요ㅎㅎ)

file = open('cage.txt', encoding='utf-8', mode='w')
file.close()

< 파일 열기 모드 >

r 읽기모드 - 파일을 읽기만 할 때 사용
w 쓰기모드 - 파일에 내용을 쓸 때 사용
a 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용

파일 객체를 다 사용하고 난 뒤에는 반드시 close()함수를 사용하여 닫아줘야 합니다.

그렇지 않으면 파일객체가 계속 열려있는 상태를 유지하며 다음과 같은 에러가 발생합니다.

ValueError: I/O operation on closed file.

02 파일에 출력값 입력하기 

쓰기모드(w)로 파일객체를 생성한 후에 write()함수를 사용하면 파일에 원하는 내용을 출력 할 수 있습니다.

직접 문자열을 전달해도 되지만 다음과 같이 리스트의 내용을 for문을 사용하여 하나씩 출력 할 수도 있습니다.

cage = ['Cat', 'Dog', 'Tiger']

file = open('cage.txt', encoding='utf-8', mode='w')

for animal in cage:
    file.write(animal + '\n')

03 with문을 사용하여 파일 생성하기

with문을 사용하면 close()함수를 사용하지 않아도 with블록을 벗어나는 순간 파일 객체가 자동으로 close됩니다.

with open('cage_3.txt', encoding='utf-8', mode='w') as f : # as == alias == 별명
    for animal in cage:
        f.write(animal + '\n')

04 파일 읽기

open()함수를 사용하여 읽기모드 'r'로 파일 객체를 생성한 후 다음과 같은 함수를 사용하여 파일의 내용을 읽습니다.

  • readline() : 파일의 한 줄을 읽어 반환한다.
  • readlines() : 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트를 반환한다.

이때 readlines()함수는 개행문자(\n)를 포함하므로 만약 개행문자를 제거한 상태로 읽고 싶다면 strip()함수를 사용하면 됩니다.

file = open('cage.txt', 'r', encoding='utf-8')  # 읽기 모드
cage = file.readlines()  #  여러줄 한번에 읽어서 리스트에 담기
for c in cage:
	print(c.strip())  # 개행문자 제거

file.close()

 

Comments