본문 바로가기

Personal Study

멘토씨리즈 Python 예제풀이 / Ch7. 파이썬의 파일 입출력

 

 

Chapter 7. 파이썬의 파일 입출력

 

section13. 파일 입출력의 이해

 

기본예제1 

오늘의 스케줄을 입력하면 그 내용을 모두 파일에 보관하는 프로그램입니다. 

스케줄을 입력하지 않고 Enter를 누르면 프로그램은 종료됩니다. 

생성되는 파일의 이름은 현재 날짜이고 확장자는 txt입니다. '2020-10-22.txt'와 같은 형식을 갖추고 있습니다.
<실행 예>

오늘의 스케줄을 입력하세요 >>> 오전에 미용실 가기

오늘의 스케줄을 입력하세요 >>> 고등학교 친구와 점심약속

오늘의 스케줄을 입력하세요 >>> 오후 대성기업 관계자 미팅

오늘의 스케줄을 입력하세요 >>> 저녁 가족모임

오늘의 스케줄을 입력하세요 >>>  Enter


import time
file = open(time.strftime('%Y-%m-%d')+'.txt', 'at')
while True:
    schedule = input('오늘의 스케줄을 입력하세요')
    if not schedule:
        break
    file.write(schedule+'\n')
file.close()

 

기본예제2 

동요 '엄마돼지 아기돼지'의 가사가 저장되어있는 '엄마돼지아기돼지.txt' 파일이 웹하드에

업로드되어 있습니다. 이 파일에서 '꿀'이라는 글자가 몇 번 나오는지 찾는 프로그램입니다.
<실행 예>

꿀은 전체 54번 나타납니다.


file = open('엄마돼지아기돼지.txt', 'rt')
line_list = file.readlines()
count = 0
for line in line_list:
    for ch in line:
        if ch == '꿀':
            count += 1
print('꿀은 전체 {}번 나타납니다.'.format(count))



응용예제1 

나라별 수도를 순차적으로 반복시켜서 nation 리스트에 저장해두었습니다.

nation 리스트의 내용을 이용하여 다음과 같은 nation.txt파일을 생성하세요.
nation = ['그리스', '아테네', '독일', '베를린', '러시아', '모스크바', '미국', '워싱턴']
<실행 예>

생성된 nation.txt 파일의 내용은 다음과 같습니다.

그리스 - 아테네

독일 - 베를린

러시아 - 모스크바

미국 - 워싱턴


nation = ['그리스', '아테네', '독일', '베를린', '러시아', '모스크바', '미국', '워싱턴']
file = open('nation.txt', 'wt')
file.write(nation[0]+'-'+nation[1]+'\n')
file.write(nation[2]+'-'+nation[3]+'\n')
file.write(nation[4]+'-'+nation[5]+'\n')
file.write(nation[6]+'-'+nation[7])
file.close()



응용예제2

웹하드에 업로드 되어있는 '연락처.txt'파일을 이용하겠습니다.

'연락처.txt'파일에 저장된 연락처 중에서 전화번호가 011로 시작하는 모든 연락처를 010으로 시작하도록

파일을 수정하세요. 연락처.txt 파일은 다음과 같은 형식으로 데이터가 저장되어 있습니다.
  '김나라', '목포시', '010-1111-1111'
  '이나라', '서울시', '011-1111-1111'
<실행 예>

총 3건의 011 데이터를 찾았습니다.

모든 데이터를 수정했습니다.


file = open('연락처.txt', 'rt')
lines = file.readlines()
modify_line = []
count = 0
for line in lines:
    name, address, phone = line.strip().split(',')
    if phone.startswith('011'):
        count += 1
        phone = phone.replace('011', '010')
    modify_line.append(f'{name.strip()}, {address.strip()}, {phone.strip()}\n')
file.close()
print('총 {}건의 011 데이터를 찾았습니다.'.format(count))
print('모든 데이터를 수정했습니다.')