이번 포스팅은 파이썬으로 엑셀과 CSV 파일을 읽고 쓰는 과정을 같이 해보려고 합니다.
파이썬 파일 핸들링은 아래 접은 글을 펴시면 나와있어요~ 링크 걸어놓을게요 :)
파이썬에서는 CSV 파일을 핸들링 할 수 있는 모듈을 제공합니다.
지금부터 엑셀과 CSV 파일을 파이썬으로 열어 볼 것이니, 당장 모듈을 끌어와야겠죠~?
모듈 임포트(import) 하기
파이썬 모듈을 가져오겠습니다 :) 모듈 이름은 csv 입니다!
import csv
모듈을 import 했으니, csv파일을 읽어 올 수 있습니다 매우 간단하게요!!
우선, 파이썬 파일과 같은 경로에 resource폴더를 만들어 주고, 그 안에 sample1.csv 파일을 만들겠습니다.
위에 첨부 해 드리니, 다운받으셔서 사용하셔도 되고, 아니면 다른 엑셀파일이나 csv도 가능하니 읽어주시기만 하면 됩니다 :)
CSV 파일 읽기
위의 sample1.csv 파일을 읽어보겠습니다.
import csv
with open('./resource/sample1.csv','r') as f:
reader = csv.reader(f)
#확인하기
print(reader)
위의 구문에서, with open 구문은 파일을 열고 자동으로 닫아주는 역할을 합니다 !
위 코드를 실행시키면
이렇게 실행 결과가 나오네요 :)
그럼, 우리 자세하게 확인을 해보도록 하겠습니다
with open('./resource/sample1.csv','r') as f:
reader = csv.reader(f)
#확인하기
print(reader)
print(type(reader))
print(dir(reader))
위의 내용에서 print문을 조금 더 추가했어요! 바로 type() 과 dir() 을 출력 해 주었습니다.
type() 은 형태를 출력 하게 해 주고, dir로 사용 할 수 있는 메소드를 확인 해 줍니다.
type()의 실행결과는 class가 나오고, dir()의 실행결과는 리스트로 쭈욱 뿌려준 메서드의 이름들이 나옵니다.
<class '_csv.reader'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute __', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__' , '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__ str__', '__subclasshook__', 'dialect', 'line_num']
위의 결과 중 __iter__가 보이면, 우리는 반복문에서 사용 할 수 있다는 것을 알 수 있습니다.
당장 반복문으로 돌려보겠습니다.
with open('./resource/sample1.csv','r') as f:
reader = csv.reader(f)
#확인하기
print(reader)
print(type(reader))
print(dir(reader))
for txt in reader:
print(txt)
위의 가장 마지막 print(txt)를 확인 해 보면 아래와 같은 결과가 나오게 됩니다.
csv파일을 파이썬으로 읽었어요~!
이번에는 비슷한 파일이지만 위와같이 콤마로 구분되지 않은 데이터를 읽어보려고 합니다.
마찬가지로 resource 폴더에 넣을거구요, 이름은 sample2.csv로 하겠습니다.
위의 코드를 사용해 sample2를 읽어보면.....
이렇게 나오게 되네요.... 파일 내부에 데이터를 구분 해 주는 문자가 sample1 과는 달라서 나타나는 현상입니다.
reader() 에 옵션을 넣어서 읽어보겠습니다
reader(f , delimiter = '|') 으로 넣어서 실행을 한번 해보도록 하겠습니다
with open('./resource/sample2.csv','r') as f:
reader = csv.reader(f,delimiter = '|')
for txt in reader:
print(txt)
위의 코드로 읽으면 리스트의 형태로 가져와 주는 것을 확인 할 수 있습니다!
딕셔너리의 형태도 중요합니다. 딕셔너리의 형태로 변환을 해 보도록 하겠습니다.
with open('./resource/sample1.csv','r') as f:
reader = csv.DictReader(f)
for c in reader:
print(c)
위와같이 csv.DictReader(f)를 사용하면, 딕셔너리의 형태로 가져오게 됩니다.
위의 코드를 응용해서, 각각의 값들을 빼 내보도록 하겠습니다
with open('./resource/sample1.csv','r') as f:
reader = csv.DictReader(f)
# for c in reader:
# print(c)
for c in reader:
for k, v in c.items():
print(k, v)
print("===================")
그럼 이제 key, value 로 나뉘어서 내용을 출력 해 주게 됩니다.
키와 값을 가지고 쉽게 데이터를 볼 수 있고 가져올 수 있으니 편하게 사용 할 수 있겠죠~?
'Old Branch' 카테고리의 다른 글
Spring Project 스프링 프로젝트 시작하기 - Spring MVC (7) | 2019.07.09 |
---|---|
Python Basic - 파이썬 엑셀(Excel, CSV) 읽기 및 쓰기 (2) (2) | 2019.07.06 |
Python Basic - 파이썬 에러 및 예외 - 예외처리(2) (0) | 2019.07.04 |
Python Basic - 파이썬 에러 및 예외 - 예외처리(1) (0) | 2019.07.03 |
Python Basic - 파이썬 파일처리하기(2) Read,Write (0) | 2019.07.02 |