Skip to content
This repository has been archived by the owner on Jul 4, 2020. It is now read-only.

Latest commit

 

History

History
183 lines (131 loc) · 5.51 KB

6.md

File metadata and controls

183 lines (131 loc) · 5.51 KB

2019-03-04

현재 저희는 클랜에 가입되어 있는 플레이어의 정보를 가지고 있습니다.

clan = ["brollgood", "MaWhangJ2", "born2kill"]

하지만 이렇게 가지고 있는 클랜원 정보는 프로그램이 종료됨과 동시에 날아갑니다.

이게 우리 테스트 코드에서는 별 문제가 되지 않지만 몇년 또는 몇십년간 서비스 되어야 하는 게임에서는 큰 문제가 됩니다.

왜냐고요? 몇 년 동안 한번도 끄지 않고 (혹은 꺼지지 않고) 돌아가는 프로그램은 많지 않기 때문입니다. 정기적인 업데이트도 수행해야 하고, 갑작스레 비정상 종료가 되기도, 또는 알 수 없는 이유로 메모리가 증가하여 재시작을 해야 할 수도 있습니다. 여러분도 게임하다 정기 점검시간이라는 이유로 그만 둬 보신일이 있겠죠?

이렇게 프로그램을 재시작해야 할 때는 미리 프로그램 정보를 저장해 두었다가 재시작후 다시 가져와야만 합니다.

우리의 경우 클랜원의 정보를 저장해야겠네요.

정보를 잃어버리지 않아야 한다면 어떤 형태로 이 정보를 보관해야 할까요? 컴퓨터를 좀 고오급지게 다루어보신 분들이라면 다들 아실겁니다.

네, 파일입니다.

파일

컴퓨터의 대부분의 정보는 파일로 되어있습니다. 윈도우즈도 파일로 되어 있고, 그 안의 게임, 오피스 프로그램, 또는 여러분이 사용하는 마야, 누크, 후디니도 모두 파일로 되어 있습니다. 이 파일이 실행되면 마야가 실행되는 것이고 누크가 실행되는 것이죠. 그렇게 띄운 프로그램이 또 씬 파일을 열게 됩니다. (이미 파일이라는 말이 붙어있죠?)

이렇게 파일은 저희와 뗄 수 없는 존재입니다. 당연히 프로그래밍과도 뗄 수 없죠.

파이썬으로 파일에 정보를 저장하려면 세 단계를 거쳐야 합니다.

연다. 저장한다. 닫는다.

읽는것도 마찬가지입니다.

연다. 읽는다. 닫는다.

파일과 관련된 행동을 할 때는 우선 열어야 합니다. 그리고 그 행동이 끝났으면 닫아야 하죠.

우선 '연다' 부터 파이썬 코드로 살펴보겠습니다.

파이썬에서 파일을 열 때는 open이라는 미리 정의되어 있는 함수를 사용합니다. 이 함수에 열 파일의 이름을 지정해 주면 그 파일을 열고 나서 연 파일을 우리에게 돌려줍니다. 아래의 코드에서 f가 이 파일입니다.

f = open("clan.txt")

제가 이렇게 쓰면 가끔씩 이럴때는 무조건 f를 써야하는건지 물어보시는 분들이 계십니다. 이 f라는 이름은 파일임을 나타내려고 제가 마음대로 쓴 이름입니다. 아래처럼 써도 전혀 상관없습니다. 하지만 한 번 이름을 정해주고 나서는 꼭 그 이름을 써야 한다는 것은 잊지 마세요.

a = open("clan.txt")
clanFile = open("clan.txt")

만일 파일을 읽기 위해서 여는 것이면 뒤에 "r"을 붙여 read, 연다라는 정보를 open에 알려주어야 합니다.

f = open("clan.txt", "r")

쓰기 위해 열려면 어떻게 해야 할까요? 네, "w"를 사용합니다.

f = open("clan.txt", "w")

읽기 위해 열었건 쓰기 위해 열었건 언젠가는 파일을 닫아야 합니다.

f = open("clan.txt", "r")
# 파일안의 정보를 읽는다.
f.close()
f = open("clan.txt", "w")
# 파일안에 정보를 쓴다.
f.close()

우선 파일을 열어 아무 정보나 저장해보겠습니다.

f = open("clan.txt", "w")
f.write("this is mine.")
f.write("don't touch!")
f.close()

그리고 나서 이 clan.txt 파일을 열어보세요.

this is mine.don't touch!

f.write가 제가 쓴 글을 파일에 담아주기는 하는데 첫번째 문장과 두번째 문장이 붙어 버렸습니다. 두번째 문장은 새 줄에서 시작하고 싶은데, 그려러면 줄바꿈 문자가 필요합니다. 좀 어색한 개념입니다. 키보드에서 엔터를 치게되면 줄바꿈 문자가 그 자리에 추가되고 컴퓨터가 이 글자(?)를 보게 되면 우리를 위해 줄을 바꾸어 주는 것입니다.

줄바꿈 문자

그 글자는 바로 "\n" 입니다.

이렇게 문자열 중간에 줄바꿈 문자를 넣게되면 다음 줄로 넘어가게 되는 것입니다.

print("줄\n바뀜")
# 줄
# 바뀜

이를 이용해서 다시 파일을 쓰면

f = open("clan.txt", "w")
f.write("this is mine.\n")
f.write("don't touch!")
f.close()

clan.txt 파일에 아래처럼 저장되었나요?

this is mine.
don't touch!

와! 박수!

드디어 우리 클랜원 정보를 파일에 쓸 차례입니다. 우리가 가지고 있는 것은 리스트죠. 이 리스트를 이용하여 한줄씩 한줄씩 파일에 저장을 하고 싶습니다. 아래처럼요.

brollgood
MaWhangJ2
born2kill

리스트의 각 아이템에 대해서 한번씩 write를 실행하면 되겠군요.

clan=["brollgood","MaWhangJ2","born2kill"]
f = open("clan.txt", "w")
for player in clan:
	f.write(player)
f.close()

엑! 아까 본 것 처럼 글이 붙어서 나와버렸습니다.

brollgoodMaWhangJ2born2kill

각각의 이름 뒤에 줄바꿈 문자를 추가하는 것을 깜빡했네요.

하지만 그것은 여러분들께 퀴즈로 남기고 오늘은 이만 하겠습니다. (너무 쉽다고요?)

분량을 다 뽑은것 같아서요. ㅋㅋ. 다음시간에 다시 찾아오도록 하겠습니다.