WeniVooks

검색

견고한 파이썬

파일 입출력 연습문제

파일 입출력 연습문제입니다. CSV 파일을 읽어 데이터를 처리하고 결과를 다시 파일에 저장하는 실습을 진행합니다.

3. 파일 입출력 연습문제

3.1 문제

student.csv에는 아래와 같은 텍스트가 담겨있습니다.

학년,반,번,이름,국어,영어,수학,사회
3,3,1,licat,90,80,30,40
3,3,2,mura,80,70,60,30
3,3,3,binky,30,80,70,30
학년,반,번,이름,국어,영어,수학,사회
3,3,1,licat,90,80,30,40
3,3,2,mura,80,70,60,30
3,3,3,binky,30,80,70,30

학생들의 평균을 구해 아래와 같이 student.csv에 출력되게 해주세요. xx라 표기된 곳에 평균 값이 들어가야 합니다.

학년,반,번,이름,국어,영어,수학,사회,평균
3,3,1,licat,90,80,30,40,xx
3,3,2,mura,80,70,60,30,xx
3,3,3,binky,30,80,70,30,xx
학년,반,번,이름,국어,영어,수학,사회,평균
3,3,1,licat,90,80,30,40,xx
3,3,2,mura,80,70,60,30,xx
3,3,3,binky,30,80,70,30,xx

3.2 정답 코드
s = ''
with open('student.csv', 'r') as f:
    lines = f.readlines()
    s += lines[0][:-1] + ',평균'
    for i in lines[1:]:
        data = i.split(',')
        s += f'\n{i.strip()},{sum(map(int, data[4:])) / 4}'
 
with open('student.csv', 'w') as f:
    f.write(s)
s = ''
with open('student.csv', 'r') as f:
    lines = f.readlines()
    s += lines[0][:-1] + ',평균'
    for i in lines[1:]:
        data = i.split(',')
        s += f'\n{i.strip()},{sum(map(int, data[4:])) / 4}'
 
with open('student.csv', 'w') as f:
    f.write(s)
3.2.1 코드 설명
  1. student.csv 파일을 읽기 모드로 열어 모든 줄을 읽습니다.
  2. 첫 번째 줄(헤더)에 '평균' 컬럼을 추가합니다.
  3. 나머지 줄에서 국어, 영어, 수학, 사회 점수(인덱스 4부터)를 추출하여 평균을 계산합니다.
  4. 각 줄에 계산된 평균을 추가합니다.
  5. 최종 결과를 student.csv 파일에 다시 씁니다.
{"packages":["numpy","pandas","matplotlib","lxml"]}
14.2 파일 다루기 | 파일 입출력14.4 비트연산