본문 바로가기
Python/Python 내장함수

Python open(), 파이썬 파일 읽고 쓰기 내장함수

by 베타코드 2022. 3. 16.
반응형

안녕하세요. 독학코딩입니다. 오늘은 파이썬에서 파일을 어떻게 읽어드리고 수정하고 저장할 수 있는지 배워보겠습니다. 파이썬의 기본적인 기능인 open()을 사용하시면 파이썬에서 파일을 일고 쓰고 저장할 수 있습니다.

with open(“file_name”) as file_A:
    read_date = file_A.read()

file_A.closed #파일이 닫혔는지 확인
#True

open()의 첫 번째 인자인 file_name은 말 그대로 파일 이름을 담은 문자열입니다. 파이썬을 실행하는 디렉토리와 다른 곳의 파일을 읽어드리기 위해선 파일 이름뿐만 아니라 해당 파일의 경로도 같이 작성해야 합니다.

open()의 두 번째 인자인 mode는 파일을 어떻게 읽어드릴지 설정하는 방식으로,

  • “r” 는 파일을 읽기만 하는 read
  • “w” 는 파일을 쓰기만 하는 write, 만약 같은 이름의 파일이 있으면 덮어쓰기 됩니다.
  • “a” 는 파일에 데이터를 추가하는 append, 추가하는 데이터를 파일의 끝에 덧붙입니다.
  • “r+” 는 파일을 읽고 쓰기 위해 사용됩니다.

만약 mode에 아무런 인자를 선택하지 않으면 “r”로 가정됩니다.
`open()` 일반적으로 with과 함께 아래와 같이 사용합니다.

with open(“file_name”) as file_A:
    read_date = file_A.read()

with를 같이 사용하는 이유는 코드 실행 도중 에러가 발생하더라도 파일이 올바르게 닫히기 때문입니다. with 키워드를 사용하거나 file_A.close()를 호출하지 않고 file_A.write()를 호출하면 프로그램이 성공적으로 종료되더라도 file_A.write()의 인자가 디스크에 완전히 기록되지 않을 수 있습니다.

Python 파일 읽고 쓰기, "w"
이제 실제 예제를 통해서 배워보겠습니다.

with open("example.txt", "w", encoding="utf8") as file_A:
    print("첫 번째 데이터입니다.", file=file_A)
    print("두 번째 데이터입니다.", file=file_A)

위의 코드를 실행해보시면 파이썬 프로젝트 안에 example.txt 파일이 새롭게 생성된 것을 확인할 수 있을 겁니다. 위 내용 중 encoding="utf8"은 파일에 한글을 사용할 때 필요한 부분입니다. 데이터의 저장 형식을 설정하는 것입니다.


Python 파일 읽고 쓰기, "a"

with open("example.txt", "a", encoding="utf8") as file_A:
    file_A.write("세 번째 데이터 입니다.")
    file_A.write("네 번째 데이터 입니다.")

위의 예제를 실행 해보시면 데이터 저장이 이상하게 되었다는 걸 확인 가능하실 겁니다.

첫 번째 데이터입니다.
두 번째 데이터입니다.
세 번째 데이터 입니다.네 번째 데이터 입니다.

이렇게 file_A.write() 한 부분이 줄 바꿈 없이 저장된 걸 확인하셨을 겁니다. write()의 경우 자동으로 줄바꿈이 안되니 \n 등으로 수동으로 설정해주시면 됩니다.

 


Python 파일 읽고 쓰기, "r" read()
마지막으로 파일을 읽는 걸 해볼까요?

with open("example.txt", "r", encoding="utf8") as file_A:
    print(file_A.read())

file_A.read()는 파일의 전체 내용을 불러오는 기능입니다. 편리하긴 하지만 일반적으로 프로그래밍에서 읽고 쓰는 파일의 크기가 작은 경우가 많이 없기 때문에 많이 사용하지는 않습니다.


Python 파일 읽고 쓰기, "r" readline()
다른 방법도 있습니다. 한 줄 한 줄씩 읽어 드리는 방법입니다.

with open("example.txt", "r", encoding="utf8") as file_A:
    print(file_A.readline())

file_A.readline()의 경우 첫 줄부터 한 줄을 읽어오고 커서는 다음 줄로 이동시키는 기능입니다. file_A.readline()을 여러번 실행하여 파일의 모든 줄을 하나하나 프린트 가능하지만, 보통은 파일이 몇 줄이나 있는지 알 수 없는 경우가 많기 때문에 아래와 같이 많이 사용합니다.

with open("example.txt", "r", encoding="utf8") as file_A:
    while True:
        line = file_A.readline()
        if not line:
            break
        print(line, end="")

이렇게 사용하시면 파일의 전체 줄 수를 알지 못하더라도 파일의 한 줄 한 줄에 접근이 가능합니다. end=""print() 줄바꿈을 안 하고 깔끔하게 출력하기 위함입니다.


Python 파일 읽고 쓰기, "r" read()
위 방법도 실질적으로는 코드가 너무 많기 때문에 더 간단한 방법이 있습니다.

with open("example.txt", "r", encoding="utf8") as file_A:
    line_list = file_A.readlines()
    for i in line_list:
        print(i, end="")

file_A.readlines()는 파일의 모든 줄을 리스트로 만드는 기능입니다. file_A.readlines()를 사용하면 위의 방법보다 훨씬 더 직관적인 방법으로 파일의 데이터에 접근이 가능합니다.

반응형

'Python > Python 내장함수' 카테고리의 다른 글

Python all(), any(), 파이썬 내장함수  (0) 2022.03.18

댓글