본문 바로가기

코딩/파이썬 표준 라이브러리

[CSV] 3장. CSV 파일 쓰기

 

CSV 파일을 생성하는 예제 코드는 다음과 같습니다.

 

import csv

with open('python_csv_03_write_test.csv', 'wt', newline='') as f:
    writer = csv.writer(f)
    writer.writerow([1, 'C', True])
    writer.writerow([2, 'C++', True])
    writer.writerow([3, 'C#', True])
    writer.writerow([4, 'python', True])
    writer.writerow([5, 'java', True])
    writer.writerow([6])
    writer.writerow([7, '', ''])

 

1,C,True
2,C++,True
3,C#,True
4,python,True
5,java,True
6
7,,

 

1. 내장 함수 open으로 저장할 CSV 파일 이름 및 속성 값을 정의할 때 전달인자 newline을 생략하면, 생성되는 파일은 다음과 같음을 유념해야 합니다.

 

1,C,True

2,C++,True

3,C#,True

4,python,True

5,java,True

6

7,,

2. csv.writer의 writerow 메서드에 각 라인 별로 파일에 저장하고자 하는 데이터를 전달합니다. writerow 메서드에 전달하는 값은 'interable'한 문자열 또는 숫자가 기본입니다.

 

3. 위의 코드 예에서 처럼 writerow 메서드로 전달한 개수 만큼 만 데이터 간 쉼표가 추가됩니다.

 

writer.writerow([6])
writer.writerow([7, '', ''])

 

만약 쉼표가 아닌 탭(tab)으로 데이터 구분을 원하면 아래 코드와 같이 csv.writer 함수에 delimiter 값을 지정해 주면 됩니다. 저장할 파일 이름을 약간 변경(~test.csv → ~tab.csv)합니다.

 

import csv

with open('python_csv_03_write_tab.csv', 'wt', newline='') as f:
    writer = csv.writer(f, delimiter='\t')
    writer.writerow([1, 'C', True])
    writer.writerow([2, 'C++', True])
    writer.writerow([3, 'C#', True])
    writer.writerow([4, 'python', True])
    writer.writerow([5, 'java', True])
    writer.writerow([6])
    writer.writerow([7, '', ''])