Python-11.File

안녕하세요 묵호입니다.
이번엔 파이썬에서 파일을 열고, 파일에 데이터를 입력하고, 파일에 있는 데이터를 출력하는 것에 대해 알아보겠습니다.

파일

지금까지는 콘솔창에서만 데이터를 읽고 써왔습니다. 예를 들어 우리가 파이썬으로 게임을 만들었다고 칩시다. 근데 잠시 게임 데이터를 저장했다가 나중에 이어서 하고 싶네요? 데이터를 저장할 때 파일에 관련 데이터를 저장해서, 나중에 파일에 있는 데이터를 읽어와서 게임을 이어할 수 있습니다.
대규모 프로그램들은 매우 오랜 기간동안 축적된 데이터를 취급하는 목적으로 사용하며, 이 경우 컴퓨터의 전원이 꺼져도 유지되는 디스크의 파일 사용은 필수적입니다. 하지만 일단 우리가 다룰 파일은 ‘단순 txt 파일’ 뿐입니다.
아, 먼저 강조하자면 파일을 열고 사용한 후에는 꼭 닫아주어야 합니다.

파일을 열어보겠습니다. 파이썬 실행파일과 같은 디렉토리에 다음 내용이 입력되어 있는 input.txt 파일이 있다고 가정하고 진행합니다.
↓파일 내용↓
1 2 3
1 2 3

file = open('input.txt', 'r') # input.txt 파일을 '읽기 전용'으로 열기
file.close() # 파일 닫기

open()함수는 첫 입력 파라메타로 파일의 이름을 문자열로 받고, 두번째로 파일을 여는 용도를 입력 받습니다. 다른 옵션들은 여기서 확인해보세요. 주로 사용하는 옵션들은 r(읽기), w(쓰기), a(내용 추가)입니다. 아무튼 open을 통해 연 파일은, 파일 class의 객체인 file을 통해 사용할 수 있습니다.

파일의 내용을 한번에 읽고 싶다면 read()를 사용하면 됩니다. 파일의 모든 내용을 읽어 화면에 출력하는 코드입니다.

file = open(input.txt, 'r')
contents = file.read()
print(contents)
file.close()
# 1 2 3
# 1 2 3


.csv 형식의 파일을 보신적이 있나요? 해당 파일은 특정 문자로 구분된 데이터들을 엑셀로 변환하여, 그 반대의 경우로도 변환할 수 있게 한 파일입니다. 다시 말하면, 텍스트 형태로 일종의 표를 저장하는 파일입니다.

매번 open과 close를 통해 파일을 읽고 쓰는 것이 귀찮다면, 파이썬에 있는 read 문법을 사용해보세요. 자동으로 닫아준답니다.

with open('input.txt', 'r') as file:
    contents = file.read()
print(contents)


input.txt에는 ‘1 2 3\n1 2 3’ 형태의 데이터가 있습니다. 즉, 두 줄의 데이터가 있다는 것입니다. 이것을 한 줄씩 읽어서 화면에 출력하는 코드들을 짜보겠습니다.

with open('input.txt', 'r') as file:
    for lineContent in file: # Point.1
        print(lineContent.strip('\n')) # .strip()은 문자열에서 특정 문자열을 제거하는 함수
file = open('input.txt', 'r')

lineContent = file.readline() # 먼저 한 줄을 불러옴

while lineContent != '': # 데이터가 있다면
    print(lineContent.strip('\n')) # 출력
    lineContent = file.readline()

file.close()



기존 파일의 내용은 그대로 두고, 그 내용에 뒤 이어 데이터를 저장하고 싶다면 옵션을 ‘a’로 주면 됩니다. a는 append의 축약어입니다. input.txt의 다음 줄에 4 5 6을 추가하는 코드를 짜보겠습니다.

with open('input.txt', 'a') as file:
    file.write('\n4 5 6\n') # write()는 문자열을 파일에 저장하는 함수

파일 입출력에 대해 더 알고 싶으시다면 여기서 정보를 얻어보세요.



다음 시간에는 검색에 대해 알아보겠습니다.
그럼.. 바위^^