csv 모듈 내 DictReader DictWriter 클래스

csv 모듈 내 DictReader, DictWriter 클래스에 대한 설명한다.

Python의 내장 모듈인 csv 모듈에는 csv 파일을 읽고 쓰는데 유용한 클래스들이 있다.
이번 포스트에서는 그 중에서도 list[dict] 형태를 읽고 쓰는데 사용되는 DictReader와 DictWriter 클래스에 대해 알아보자.

csv.DictReader 클래스

class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
  • f : 읽어올 파일 객체
  • fieldnames : 불러올 필드 명(없으면 첫 줄을 필드 명으로 사용)
자주 사용되지 않는 인자 - `restkey` : `fieldnames`에서 지정되지 않은 나머지 필드 이름을 저장할 키 - `restval` : 지정되지 않은 값들을 저장할 값 - `dialect` : csv 파일의 구분자, 따옴표 등을 지정 ([csv.Dialect 클래스](https://docs.python.org/ko/3/library/csv.html#csv.Dialect) 참고)

예시

test.csv | name | age | address | | —- | — | ——- | | 홍길동 | 20 | 서울시 강남구 | | 이순신 | 30 | 서울시 강북구 | | 강감찬 | 40 | 서울시 강서구 |

import csv

with open('test.csv', 'r') as f:
    reader = csv.DictReader(f)
    print(*reader, end='\n')
{'name': '홍길동', 'age': '20', 'address': '서울시 강남구'}
{'name': '이순신', 'age': '30', 'address': '서울시 강북구'}
{'name': '강감찬', 'age': '40', 'address': '서울시 강서구'}

csv.DictWriter 클래스

class csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
  • f : 작성할 파일 객체
  • fieldnames : 작성할 필드 명(csv.DictReader 클래스와 다르게 필수)
자주 사용되지 않는 인자 - `restval` : `fieldnames`에서 지정되지 않은 값들을 저장할 값 - `extrasaction` : `fieldnames`에 지정되지 않은 값들을 처리하는 방법 - `raise` : 예외 발생(기본값) - `ignore` : 무시 - `dialect` : csv 파일의 구분자, 따옴표 등을 지정 ([csv.Dialect 클래스](https://docs.python.org/ko/3/library/csv.html#csv.Dialect) 참고)

예시

import csv

with open('test.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=['name', 'age', 'address'])
    writer.writeheader()
    writer.writerow({'name': '홍길동', 'age': 20, 'address': '서울시 강남구'})
    writer.writerows(
        [
            {'name': '이순신', 'age': 30, 'address': '서울시 강북구'},
            {'name': '강감찬', 'age': 40, 'address': '서울시 강서구'},
        ]
    )

test.csv | name | age | address | | —- | — | ——- | | 홍길동 | 20 | 서울시 강남구 | | 이순신 | 30 | 서울시 강북구 | | 강감찬 | 40 | 서울시 강서구 |


© 2021. All rights reserved.

Powered by Hydejack v7.5.2