Logo

[파이썬] open() 함수를 이용한 파일 입출력

파이썬에서는 내장 함수인 open()을 이용해서 다른 언어에 비해서 매우 간단하게 파일 입출력 처리를 할 수 있습니다.

파일에 데이터 쓰기

먼저 파일에 데이터를 쓰는 방법에 대해서 알아보겠습니다. 아래 colors 배열에 들어있는 문자열 3개를 colors.dat 파일에 쓰려고 합니다.

colors = ['red', 'yellow', 'blue']

파일을 열 때는 기본적으로 with 문을 통해 open() 내장 함수를 호출하는 것이 권장됩니다. with 문을 사용하지 않을 경우, 파일 닫기를 스스로 해줘야 해서 불필요하게 코드가 지저분해지기 때문입니다.

open() 내장 함수는 첫번째 인자로는 파일명, 두번째 인자로는 모드를 받습니다. 파일에 데이터를 쓸 때는 w 모드를 사용하고 파일을 열고, 파일 핸들러의 write() 메서드를 사용해서 쓸 데이터를 넘기면 됩니다. 또 다른 방법으로 print() 내장 함수를 사용하되 두번째 인자로 파일 핸들러 넘길 수도 있습니다.

with open('colors.dat', 'w') as file:
    for color in colors:
        file.write(color + '\n')
        # print(color, file=file)

위 코드를 실행하면 colors.dat 파일이 생성되고, 그 파일 안에 다음과 같이 데이터가 쓰여져있음을 확인할 수 있습니다.

red
yellow
blue

여기서 주의할 점은 w 모드를 사용해서 파일에 쓰기를 할 때는 기존에 파일에 있던 데이터는 모두 사라진다는 것입니다. 기존에 데이터를 유지한 체로 데이터를 추가해서 쓰고 싶은 경우에는 a 모드를 사용하면 됩니다.

파일로 부터 데이터 읽기

파일로 부터 데이터를 읽을 때는 r 모드를 사용해서 파일을 열어야 합니다. 파일 핸들러의 read() 함수는 파일의 전체 데이터를 문자열로 리턴합니다.

with open('colors.dat') as file:
    print(file.read())

위 코드를 실행하면 다음과 같이 콘솔에 파일의 전체 데이터가 출력될 것입니다.

red
yellow
blue

파일을 줄 단위로 읽어야 할 때는 for 문을 사용해서 파일 핸들러를 루프 돌 수 있습니다.

with open('colors.dat') as file:
    for color in file:
        print(color, end='')

파일을 줄 단위로 읽은 결과를 바로 배열에 저장하고 싶다면 다음과 같이 splitlines() 메서드를 사용하면 됩니다.

with open('colors.dat') as file:
    colors = file.read().splitlines()
    print(colors)
['red', 'yellow', 'blue']

이상으로 파이썬의 open() 내장 함수를 이용해서 파일에 데이터를 쓰거나 읽는 방법에 대해서 간단히 살펴보았습니다.