본문 바로가기
Language/Python

[Python] csv 모듈을 이용하여 파일 읽고, 쓰기 | LIM

by forestlim 2023. 5. 10.
728x90
반응형

파이썬으로 CSV 파일 읽기(mode='r')

with 문 사용 - with 문을 사용해서 읽고 쓸 경우 파일을 닫을 필요가 없습니다.

import csv

with open('test.csv', 'r') as f:
    reader = csv.reader(f)

    for line in reader:
        print(line)
['Name', ' Height']
['Robin', ' 170']
['Rudy', ' 150']
['Mike', ' 190']
['Hailey', ' 160']

 

with 문 사용하지 않는 경우

import csv
f = open('test.csv', 'r')
reader = csv.reader(f)

for line in reader:
    print(line)
    
f.close()

 

파이썬으로 CSV 파일 쓰기(mode='w')

with 문 사용하는 경우

import csv

with open('test.csv', 'w') as f:
    writer = csv.writer(f)

    writer.writerow(['Name', 'Height'])
    writer.writerow(['Robin', '170'])
    writer.writerow(['Rudy', '150'])

 

with 문 사용하지 않는 경우

import csv

f = open('test.csv', 'w')
writer = csv.writer(f)

writer.writerow(['Name', 'Height'])
writer.writerow(['Robin', '170'])
writer.writerow(['Rudy', '150'])

f.close()

 

 

파이썬으로 CSV 파일에 row 추가(mode='a')

with 문 사용하는 경우

import csv

with open('test.csv', 'a', newline='') as f:
    writer = csv.writer(f)

    writer.writerow(['Mike', '190'])
    writer.writerow(['Hailey', '160'])

 

with 문 사용하지 않는 경우

import csv

f = open('test.csv', 'a', newline='')
writer = csv.writer(f)

writer.writerow(['Mike', '190'])
writer.writerow(['Hailey', '160'])

f.close()

 

 

Dict 형태 데이터 CSV 파일에 쓰기(mode='w')

with 문 사용하는 경우

import csv

with open('test.csv', 'w') as f:
    data = [{'Name': 'Robin', 'Height': 170},
            {'Name': 'Rudy', 'Height': 150},
            {'Name': 'Mike', 'Height': 190},
            {'Name': 'Hailey', 'Height': 160}]

    writer = csv.DictWriter(f, fieldnames=data[0].keys()) # fieldnames=['Name', 'Height']
    writer.writeheader()

    writer.writerows(data)

 

with 문 사용하지 않는 경우

import csv

f = open('test.csv', 'w')

data = [{'Name': 'Robin', 'Height': 170},
        {'Name': 'Rudy', 'Height': 150},
        {'Name': 'Mike', 'Height': 190},
        {'Name': 'Hailey', 'Height': 160}]

writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()

writer.writerows(data)

f.close()

 

Dict 형태의 CSV 파일에 row 추가(mode='a')

with 문 사용하는 경우

import csv

with open('test.csv', 'a', newline='') as f:
    data = [{'Name': 'Robin', 'Height': 170},
            {'Name': 'Rudy', 'Height': 150},
            {'Name': 'Mike', 'Height': 190},
            {'Name': 'Hailey', 'Height': 160}]

    writer = csv.DictWriter(f, fieldnames=data[0].keys())

    writer.writerows(data)

 

 

with 문 사용하지 않는 경우

import csv

f = open('test.csv', 'a', newline='')

data = [{'Name': 'Robin', 'Height': 170},
        {'Name': 'Rudy', 'Height': 150},
        {'Name': 'Mike', 'Height': 190},
        {'Name': 'Hailey', 'Height': 160}]

writer = csv.DictWriter(f, fieldnames=data[0].keys())

writer.writerows(data)

f.close()

 


보통은 pandas 를 이용해서 csv 읽고 쓰기를 많이 하지만 for loop 중간중간 파일을 열고 라인을 추가하거나 하는 경우 csv 를 이용하고 있다. 매번 쓸때마다 헷갈려서 정리해두었다.

728x90
반응형

댓글