dev/python

[python] 파이썬 파일 I/O (file)

최연탄 2023. 6. 9. 17:46
728x90
반응형

참고: https://www.programiz.com/python-programming/file-operation

이 포스트에서는 예제를 통해 파이썬의 파일과 그에 관련된 다양한 작업에 대해 알아보겠습니다.

파일은 컴퓨터의 저장 장치에 데이터를 저장하기 위해 사용하는 컨테이너입니다. 파일을 읽거나 쓰려면 먼저 파일을 열어야 합니다. 그리고 작업을 완료했다면 파일과 연결된 리소스가 해제되도록 파일을 닫아야합니다.

이에 따라 파이썬에서는 파일 작업은 다음 순서로 수행합니다:

  1. 파일 열기
  2. 읽거나 쓰기
  3. 파일 닫기

파이썬에서 파일 열기

파이썬에서는 파일을 열 때 open() 메소드를 사용합니다. 예제를 실행해 보기 위해 다음 내용이 포함된 test.txt 라는 파일이 있다고 가정해보겠습니다.

This is test file.
Hello from the test file.

이제 open() 함수를 사용하여 이 파일에서 데이터를 열어 보겠습니다.

file1 = open("test.txt")

여기서는 file1 이라는 파일 객체를 만들었습니다. 이 객체는 파일 및 디렉토리 작업에 사용할 수 있습니다. 기본적으로 파일은 읽기 모드(수정할 수 없음)로 열립니다. 위의 코드는 다음과 동일한 코드입니다.

file1 = open("test.txt", "r")

여기서 파일을 읽기위해 열었다는 의미인 "r" 매개변수를 전달하여 명시적으로 모드를 지정했습니다.

파일 열기 모드

  • 'r' - 읽기 모드로 엽니다. (기본)
  • 'w' - 쓰기 모드로 엽니다. 파일이 존재하지 않으면 새로 생성하고, 존재하면 내용을 제거합니다.
  • 'x' - 독점 파일 생성 모드입니다. 파일이 이미 존재하면 작업이 실패합니다.
  • 'a' - 추가 모드로 기존 파일의 뒤에 내용을 추가합니다. 파일이 존재하지 않는다면 새로 생성합니다.
  • 't' - 텍스트 모드로 엽니다. (기본)
  • 'b' - 바이너리 모드로 엽니다.
  • '+' - 업데이트 용(읽기, 쓰기)으로 엽니다.

다음은 여러가지 모드로 파일을 여는 예제입니다.

file1 = open("test.txt")
file1 = open("test.txt",'w')
file1 = open("img.bmp",'r+b')

첫 번째 open()은 'r' 또는 'rt' 모드로 파일을 열었습니다. 두 번째 open() 함수에서는 쓰기 모드로 열었습니다. 마지막 open()에서는 바이너리 읽기 모드로 열었습니다.

파일 내용 읽기

다음의 예와 같이 파일을 연 다음 read() 메소드를 사용해 콘텐츠를 읽을 수 있습니다.

file1 = open("test.txt", "r")

read_content = file1.read()

print(read_content)

위의 예제에서는 test.txt 파일에서 내용을 읽었습니다. file1.read()를 통해 파일의 내용을 읽어 read_content 변수에 저장했습니다.

파일 닫기

파일에 대한 작업을 마쳤으면 파일을 닫아야합니다. 파일을 닫으면 파일과 연결된 리소스가 해제됩니다. 이는 파이썬의 close() 메소드를 사용하면 됩니다.

file1 = open("test.txt", "r")

read_content = file1.read()
print(read_content)

file1.close()

위의 예제에서 close() 메소드를 사용해 파일을 닫았습니다.

예외 핸들링

파일 작업을 하다가 예외가 발생하면 파일을 닫지도 않고 코드가 종료될 수 있습니다. 이러한 상황에서 안전하게 작업하는 방법은 try...finally 블록을 사용하는 것 입니다.

try:
    file1 = open("test.txt", "r")
    read_content = file1.read()
    print(read_content)

finally:
    file1.close()

여기서는 finally가 항상 실행되므로 finally 블록에서 파일을 닫았습니다. 이로서 예외가 발생해도 파일이 닫힙니다.

with...open 문법 사용

파이썬에서는 with...open 구문을 사용하여 파일을 자동으로 닫을 수 있습니다.

with open("test.txt", "r") as file1:
    read_content = file1.read()
    print(read_content)

with...open 구문을 사용하면 파일을 닫는 것을 신경쓰지 않아도 됩니다.

파일에 내용 쓰기

파일 쓰기를 하는 동안 기억해야 할 두 가지 사항이 있습니다:

  • 존재하지 않는 파일을 열려고 하면 새 파일이 생성됩니다.
  • 파일이 이미 있으면 내용이 지워지고 새 내용이 파일에 추가됩니다.

파이썬에서 파일에 쓰려면 open() 함수의 두 번째 매개변수에 "w"를 전달하여 쓰기 모드로 파일을 열어야 합니다. test2.txt 라는 파일이 파일 시스템에 존재하지 않는다고 가정하겠습니다. 이 때 test2.txt 파일에 내용을 쓰면 어떻게 되는지 보겠습니다:

with open('test2.txt', 'w') as file2:
    file2.write('Programming is Fun.')
    file2.write('sisiblog for beginners')

여기서는 test2.txt 파일이 새로 생성되었고 write() 메소드를 사용하여 파일에 내용을 저장했습니다.

관련 글

파이썬 파일 열기 (open)

반응형