[Python]CSV파일 읽기/쓰기
CSV 파일의 읽기와 쓰기에 대해 알아보자
# CSV 파일읽기 및 쓰기 # CSV MINE : text/csv import csv # 예제1 with open('./resource/test1.csv', 'r') as f: reader = csv.reader(f) next(reader) # __iter__ 사용이 가능한 경우, 반복문을 1회 넘긴다. 여기서는 header 를 건너뛴다. # 객체확인 print(reader) # 타입확인 print(type(reader)) # 속성확인 print(dir(reader)) print() for c in reader: # 리스트로 가져온다. print(' : '.join(c)) # 예제2 : 구분자 변경 with open('./resource/test2.csv', 'r') as f: reader = csv.reader(f, delimiter='|') for c in reader: print(c) # 예제3 with open('./resource/test1.csv', 'r') as f: reader = csv.DictReader(f) print(reader) print(type(reader)) print(dir(reader)) print() for c in reader: for k, v in c.items(): print(k, v) print('-' * 20) # 예제4 w = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21]] with open('./resource/write1.csv', 'w', newline="\n", encoding='UTF-8') as f: print(dir(csv)) writer = csv.writer(f) # dir확인 print(dir(writer)) # 타입확인 print(type(writer)) for v in w: print(v) writer.writerow(v) # 예제5 with open('./resource/write2.csv', 'w', newline="\n", encoding='UTF-8') as f: # 필드명 fields = ['One', 'Two', 'Three'] # Dict Writer writer = csv.DictWriter(f, fieldnames=fields) # Header Writer writer.writeheader() for v in w: writer.writerow({'One': v[0], 'Two': v[1], 'Three': v[2]})
결과:
<_csv.reader object at 0x0000022AB1762020> <class '_csv.reader'> ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num'] Afghanistan : AF ... 중략 ... Yemen : YE Zambia : ZM Zimbabwe : ZW ['Name', 'Code'] ['Afghanistan', 'AF'] ... 중략 ... ['Yemen', 'YE'] ['Zambia', 'ZM'] ['Zimbabwe', 'ZW'] <csv.DictReader object at 0x0000022AB17079A0> <class 'csv.DictReader'> ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_fieldnames', 'dialect', 'fieldnames', 'line_num', 'reader', 'restkey', 'restval'] Name Afghanistan Code AF -------------------- ... 중략 .... -------------------- Name Yemen Code YE -------------------- Name Zambia Code ZM -------------------- Name Zimbabwe Code ZW -------------------- ['Dialect', 'DictReader', 'DictWriter', 'Error', 'QUOTE_ALL', 'QUOTE_MINIMAL', 'QUOTE_NONE', 'QUOTE_NONNUMERIC', 'Sniffer', 'StringIO', '_Dialect', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', 'excel', 'excel_tab', 'field_size_limit', 'get_dialect', 'list_dialects', 're', 'reader', 'register_dialect', 'unix_dialect', 'unregister_dialect', 'writer'] ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'writerow', 'writerows'] <class '_csv.writer'> [1, 2, 3] [4, 5, 6] [7, 8, 9] [10, 11, 12] [13, 14, 15] [16, 17, 18] [19, 20, 21]
최신 댓글