본문 바로가기

Coding, Testing, Challenge/Python-Middle

Python 파일 입출력

728x90

이번 포스팅에서는 Python의 파일 입출력에 대해서 알아보도록 하겠습니다.

파일 입출력은 일반적으로 외부 파일에서 데이터를 가져오거나,

프로그램의 결과로 만들어진 유의미한 데이터를 저장하기 위해서 사용됩니다.

 

파일을 다루기 위해서 프로그램에서 파일을 읽어올 때 사용되는 3가지의 모드가 있습니다.

  • w : 쓰기 모드(write)
  • a  : 추가 모드(append)
  • r  : 읽기 모드(read)

각각의 모드에 대해서 자세히 알아보도록 하겠습니다.

먼저 쓰기 모드로 파일을 열어서 작업하는 코드는 다음과 같습니다.

쓰기 모드에서는 기존의 데이터 위에 데이터를 덮어쓰게 됩니다.

# open함수를 통해서 파일을 객체로 가져온다
file = open("test.txt", "w") 

# 가져온 파일 객체에 데이터를 입력한다.
file.write("date write")

# 입력이 끝난 파일 객체를 닫는다.
file.close()

추가 모드로 파일을 열어서 작업하는 코드는 다음과 같습니다.

open 함수로 객체를 가져올떄 쓰기 모드(w)가 아닌 추가 모드(a)로 객체를 가져오면 됩니다.

추가 모드에서는 기존의 데이터에 데이터를 이어서 쓰게 됩니다.

# open함수를 통해서 파일을 객체로 가져온다
file = open("test.txt", "a") 

# 가져온 파일 객체에 데이터를 입력한다.
file.write("date write")

# 입력이 끝난 파일 객체를 닫는다.
file.close()

 

 

 

 

 

 

 

읽기 모드로 파일을 열어서 작업하는 코드는 다음과 같습니다.

읽기 모드에서는 read()메소드를 통해서 불러온 파일 객체의 데이터를 변수에 저장한 후 사용이 가능합니다.

변수에 저장되는 type은 str입니다.

읽기 모드로 가져온 객체는 읽기 전용이기 때문에 write()메소드를 사용할 수 없습니다.

# open함수를 통해서 파일을 객체로 가져온다
file = open("test.txt", "r") 

# 가져온 파일 객체의 데이터를 읽어 들여서 변수 data에 저장
data= file.read()

# 입력이 끝난 파일 객체를 닫는다.
file.close()

 

읽기 모드로 읽어온 객체의 read()메소드는 파일 전체를 한 번에 저장하게 됩니다.

한 줄씩 읽기 위해서는 readline() 메서드를 사용해야 합니다.

아래의 예제는 파일을 읽어들여서 한 줄씩 리스트에 저장하는 코드입니다.

readline으로 읽어들일 경우는 파일의 끝을 알 수 없기에 while 반복문을 통해서 읽어 들이게 됩니다.

# open함수를 통해서 파일을 객체로 가져온다
file = open("test.txt", "r")

# 데이터를 읽어올 line 변수 선언
line = None

# 파일을 끝은 데이터가 없는 상태이므로
# 읽어온 데이터가 ''이면 파일을 끝까지 다 읽었다고 판단
while line != '':
    # file을 한줄씩 읽어 들인다
    line = file.readline()

    # 읽어 들인 line을 처리하는 코드 작성
    # 여기에서는 line 별로 출력
    print(line)

# 파일을 객체를 닫는다.
file.close()

 

파일을 읽어 들인 이터를 한줄씩 list형태로 저장하여 사용할 경우는 readlines() 메서드를 사용하면 됩니다.

# open함수를 통해서 파일을 객체로 가져온다
file = open("test.txt", "r")

# file의 데이터를 한줄씩 읽어 들여서 List로 저장 
data = file.readlines()

# 파일을 객체를 닫는다.
file.close()

 

이번 포스팅에서는 파일의 입출력에 대해서 알아보았습니다.

다음 포스팅에서는 with구문과 pickle 모듈에 대해서 알아보도록 하겠습니다.