Python/기초 다지기

[파이썬 기초]파일 읽고 쓰기

두잇(Do It) 2024. 2. 18. 14:21
반응형

파일 읽고 쓰기

우리는 이제까지 값을 ‘입력’받을 때는 사용자가 직접 입력하는 방식을 사용했고

‘출력’할 때는 모니터 화면에 결괏값을 출력하는 방식을 사용했습니다.

하지만 입출력 방법이 꼭 이것만 있는 것은 아닙니다.

이번에는 파일을 통한 입출력 방법에 대해 알아봅시다.

여기에서는 파일을 새로 만든 다음 프로그램이 만든 결과값을 새 파일에 저장해보고

또 파일에 저장된 내용을 읽고 새로운 내용을 추가하는 방법도 알아보겠습니다.

 

파일 읽기

파이썬에서 파일을 읽기 위해서는 open() 함수를 사용하여 파일을 열고, 이후에 파일 객체를 사용하여 파일의 내용을 읽어올 수 있습니다.

 

파일 열기 쓰기

open() 함수를 사용하여 파일을 엽니다. 이 함수는 파일 객체를 반환합니다.

file = open("파일경로/파일이름.txt", "r")

 

코드 끝은 'r'부분은 파일을 열때 모드를 뜻합니다

파일을 열때 다양한 모드가 있는데 아래 설명해드리겠습니다

 

  1. 읽기 모드 (Read Mode - "r"):
    • 파일을 읽기 전용으로 엽니다.
    • 파일이 존재하지 않으면 오류가 발생합니다.
    • 파일의 포인터는 파일의 시작 부분에 위치합니다.
  2. 쓰기 모드 (Write Mode - "w"):
    • 파일을 쓰기 전용으로 엽니다.
    • 파일이 존재하지 않으면 새로 생성하고, 파일이 이미 존재하면 기존 내용을 모두 삭제합니다.
    • 파일의 포인터는 파일의 시작 부분에 위치합니다.
  3. 추가 모드 (Append Mode - "a"):
    • 파일을 쓰기 전용으로 엽니다.
    • 파일이 존재하지 않으면 새로 생성하고, 파일이 이미 존재하면 파일 끝에 새로운 내용을 추가합니다.
    • 파일의 포인터는 파일의 끝에 위치합니다.
  4. 바이너리 읽기 모드 (Binary Read Mode - "rb"):
    • 텍스트 파일이 아닌 이진 파일을 읽기 위해 사용됩니다.
    • 파일을 바이너리 모드로 열 때 사용됩니다.
    • 윈도우에서는 텍스트 파일과 바이너리 파일의 차이가 없지만, 리눅스나 맥에서는 차이가 있습니다.
  5. 바이너리 쓰기 모드 (Binary Write Mode - "wb"):
    • 바이너리 파일을 쓰기 위해 사용됩니다.
    • 파일을 바이너리 모드로 열 때 사용됩니다.
  6. 텍스트 읽기 및 쓰기 모드 (Read/Write Mode - "r+"):
    • 파일을 읽기 및 쓰기 모드로 엽니다.
    • 파일이 존재하지 않으면 오류가 발생합니다.
    • 파일의 포인터는 파일의 시작 부분에 위치합니다.
  7. 바이너리 읽기 및 쓰기 모드 (Binary Read/Write Mode - "r+b" 또는 "rb+"):
    • 이진 파일을 읽고 쓰기 위해 사용됩니다.
    • 파일을 바이너리 모드로 열 때 사용됩니다.

이렇게 다양한 모드가 있지만 일반적으로 'r', 'w', 'a' 가 제일 많이 쓰이는 방식입니다

 

파일 닫기

파일을 읽은 후에는 반드시 파일을 닫아야 합니다.

파일을 열고 사용이 끝났을 때는 close() 메서드를 사용하여 파일을 닫습니다.

file.close()

 

또는 with 문을 사용하여 파일을 열면 블록이 종료될 때

파일이 자동으로 닫히도록 할 수 있습니다.

이 방법을 사용하는 것이 권장됩니다.

with open("파일경로/파일이름.txt", "r") as file:
    content = file.read()

 

위의 과정을 통해 파일을 열고 내용을 읽을 수 있습니다.

하지만 파일을 한 번에 전체 내용을 읽지 않고 한 줄씩 처리하는 것이 메모리 효율적이며

대용량 파일도 처리할 수 있습니다.

이를 위해서는 for 문을 사용하여 파일 객체를 반복적으로 순회하면 됩니다.

with open("파일경로/파일이름.txt", "r") as file:
    for line in file:
        print(line.strip())  # 각 줄의 공백 제거하여 출력

 

위 코드는 파일을 한 줄씩 읽어와서 각 줄을 출력합니다.

strip() 메서드를 사용하여 각 줄의 앞뒤 공백을 제거하고 출력합니다.

 

파일 쓰기

파일 객체의 write() 메서드를 사용하여 파일에 데이터를 씁니다.

이 메서드는 문자열을 인자로 받아 파일에 문자열을 씁니다.

줄 바꿈을 추가하려면 문자열 끝에 \n을 추가해야 합니다.

file.write("첫 번째 줄\n")
file.write("두 번째 줄\n")
file.write("세 번째 줄\n")

 

 

파일에 새로운 내용 추가

새로운 내용을 파일에 추가하기 위해서는 파일을 "추가 모드"로 열어야 합니다.

파이썬에서는 파일을 추가 모드("a")로 열면 기존 파일에 새로운 내용을 추가할 수 있습니다.

추가 모드로 파일을 열 때는 파일이 존재하지 않으면 새로 생성하고,

파일이 이미 존재하면 파일 끝에 새로운 내용을 추가합니다.

아래는 파일에 새로운 내용을 추가하는 과정을 보여주는 예제 코드입니다

with open("파일경로/파일이름.txt", "a") as file:
    file.write("추가할 새로운 내용\n")
    file.write("또 다른 추가 내용\n")

 

위의 코드에서 "파일경로/파일이름.txt"는 파일의 경로와 이름을 나타냅니다.

open() 함수의 두 번째 인자로 "a"를 전달하여 파일을 추가 모드로 엽니다.

그런 다음 파일 객체의 write() 메서드를 사용하여 파일에 추가할 새로운 내용을 작성합니다.

추가 모드로 파일을 열면 파일의 끝에 새로운 내용을 추가하게 됩니다.

with 문을 사용하여 파일을 열면 블록이 종료될 때 파일이 자동으로 닫히도록 할 수 있습니다.

이 방법을 사용하면 파일을 닫는 것을 잊어버리는 실수를 방지할 수 있습니다.

with open("파일경로/파일이름.txt", "a") as file:
    file.write("추가할 새로운 내용\n")
    file.write("또 다른 추가 내용\n")

 

이 코드는 파일을 추가 모드로 열고 새로운 내용을 추가한 후 파일을 자동으로 닫습니다.

파일에 새로운 내용을 추가하는 방법은 기존 파일에 데이터를 추가하여 파일을 업데이트하거나

새로운 내용을 기존 파일에 추가할 때 유용합니다.

반응형