Python

python - 파일 입출력

nsh95 2024. 5. 8. 17:18

 

 

 파일이 열리는 옵션, 모드 입니다. 이 모드에 따라 읽기 용인지 파일을 생성하고 쓸것인지 등이 정해집니다.
 'r' : 기본값으로 정해져 있으며 파일을 읽기 위한 옵션 입니다.
 'w' : 쓰기모드이며 파일에 내용을 쓸 때 사용하는 옵션 입니다. 만약 이미 파일이 존재하면 커서를 맨 앞으로 돌리면서 뒤에 내용을

         다 잘라내기 때문에 내용이 사라질 수 있습니다. 파일이 존재하지 않는다면 새롭게 파일을 생성합니다.
 'a' : 쓰기모드이며 파일에 내용을 쓸 때 사용하는 옵션입니다. w 옵션과는 달리 이미 파일이 존재하면 그 파일의 끝에 커서가 존재하고,

       그 뒤에 이어쓰기가 가능합니다. 
       즉, 파일 내용을 잘라내지 않고 이어서 쓸 수 있습니다.
 'x' : 파일이 없으면 파일을 생성하고 쓰기모드로 열립니다. 만약 파일이 있으면 에러를 발생시킵니다.

 'b' : 바이너리 모드 입니다.
 't' : 텍스트 모드 입니다. (기본값)

 

 

## 읽기 예제 코드
file=open('test.txt', 'rt') # 파일 읽어들이는 코드
cnt=0
while True:
    line=file.readline()
    if line == '' :
        break
    cnt+=1
    print(str(cnt)+' '+line)
file.close()

 

 

 

 

with open('test.txt', 'rt') as file :
    lines=file.readlines()
    for line in lines :
        print(line)

## wt : 기존의 내용위에 덮어쓰기 ★ 원본을 지켜야한다 !!!!!
## at : 기존의 내용뒤에 이어쓰기

with open('test.txt', 'at') as file :
    while True :
        msg = input('입력 >> ')
        if not msg :
            break
        file.write(msg)

 

 

 

HANGMAN 게임

 quiz.txt 파일에 영단어 1개를 저장해주세요.
 banana
 ______ 입력 >> a
 _a_a_a 입력 >> c
 c는 없습니다!
 _a_a_a 입력 >> b
 ba_a_a 입력 >> n
 banana 정답입니다! :D
 quiz.txt 파일에
 총 4번만에 정답을 맞추셨습니다. 라고 작성해서 저장해주세요.

 

예제 코드

answer=''
ans=''
cnt=0

with open('quiz.txt','rt') as file:
    answer=file.readline()
    ans='_'*len(answer)					## 정답을 _ 로 바꿔주는 코드
    
    
while True:
    print(ans, end=' ')					## 출력하는 값 뒤에 공백을 넣어주는 코드
    if ans == answer:
        print('정답입니다 ')
        break
    a=input('입력 >> ')
    cnt+=1								## 시도할 때마다 횟수 증가
    if a in answer:
        for i in range(len(answer)):
            if a == answer[i]:
                ans = ans[:i]+ a + ans[i+1:]       # python slicing
    else:
        print(a+' 문자는 없습니다')

with open('quiz.txt','at') as file:
    file.write('총'+str(cnt)+'번만에 정답을 맞추셨습니다')