Python 데이터 지속성-CSV 모듈
CSV stands for comma separated values. 이 파일 형식은 데이터베이스의 스프레드 시트 및 데이터 테이블에서 데이터를 내보내거나 가져올 때 일반적으로 사용되는 데이터 형식입니다. csv 모듈은 PEP 305의 결과로 Python의 표준 라이브러리에 통합되었습니다. PEP 305의 권장 사항에 따라 CSV 파일에서 읽기 / 쓰기 작업을 수행하는 클래스와 메서드를 제공합니다.
CSV는 Microsoft의 Excel 스프레드 시트 소프트웨어에서 선호하는 내보내기 데이터 형식입니다. 그러나 csv 모듈은 다른 방언으로 표현되는 데이터도 처리 할 수 있습니다.
CSV API 인터페이스는 다음과 같은 작성기 및 판독기 클래스로 구성됩니다.
작가()
csv 모듈의이 함수는 데이터를 구분 된 문자열로 변환하고 파일 객체에 저장하는 작성기 객체를 반환합니다. 이 함수에는 쓰기 권한이있는 파일 개체가 매개 변수로 필요합니다. 파일에 기록 된 모든 행은 개행 문자를 발행합니다. 줄 사이의 추가 공백을 방지하기 위해 개행 매개 변수는 ''로 설정됩니다.
작가 클래스는 다음과 같은 방법이 있습니다-
writerow ()
이 메서드는 항목을 반복 가능한 (목록, 튜플 또는 문자열)로 작성하여 쉼표로 구분합니다.
writerows ()
이 메소드는 반복 가능한 목록을 매개 변수로 취하고 각 항목을 파일에서 쉼표로 구분 된 항목 행으로 작성합니다.
Example
다음 예제는 writer () 함수의 사용을 보여줍니다. 먼저 파일이 'w'모드로 열립니다. 이 파일은 작성기 개체를 얻는 데 사용됩니다. 그런 다음 튜플 목록의 각 튜플은 writerow () 메서드를 사용하여 파일에 기록됩니다.
import csv
persons=[('Lata',22,45),('Anil',21,56),('John',20,60)]
csvfile=open('persons.csv','w', newline='')
obj=csv.writer(csvfile)
for person in persons:
obj.writerow(person)
csvfile.close()
Output
현재 디렉토리에 'persons.csv'파일이 생성됩니다. 다음 데이터가 표시됩니다.
Lata,22,45
Anil,21,56
John,20,60
목록을 반복하여 각 행을 개별적으로 작성하는 대신 writerows () 메서드를 사용할 수 있습니다.
csvfile=open('persons.csv','w', newline='')
persons=[('Lata',22,45),('Anil',21,56),('John',20,60)]
obj=csv.writer(csvfile)
obj.writerows(persons)
obj.close()
리더()
이 함수는 줄의 반복자를 반환하는 판독기 개체를 반환합니다. csv file. 일반 for 루프를 사용하면 파일의 모든 행이 다음 예에 표시됩니다.
예
csvfile=open('persons.csv','r', newline='')
obj=csv.reader(csvfile)
for row in obj:
print (row)
산출
['Lata', '22', '45']
['Anil', '21', '56']
['John', '20', '60']
판독기 개체는 반복기입니다. 따라서 csv 파일의 모든 행을 표시하는 데 사용할 수있는 next () 함수를 지원합니다.for loop.
csvfile=open('persons.csv','r', newline='')
obj=csv.reader(csvfile)
while True:
try:
row=next(obj)
print (row)
except StopIteration:
break
앞서 언급했듯이 csv 모듈은 Excel을 기본 언어로 사용합니다. csv 모듈은 또한 dialect 클래스를 정의합니다. Dialect는 CSV 프로토콜을 구현하는 데 사용되는 표준 집합입니다. 사용 가능한 방언 목록은 list_dialects () 함수로 얻을 수 있습니다.
>>> csv.list_dialects()
['excel', 'excel-tab', 'unix']
iterables 외에도 csv 모듈은 사전 객체를 CSV 파일로 내보내고 읽어서 Python 사전 객체를 채울 수 있습니다. 이를 위해이 모듈은 다음 클래스를 정의합니다.
DictWriter ()
이 함수는 DictWriter 개체를 반환합니다. writer 개체와 비슷하지만 행이 사전 개체에 매핑됩니다. 이 함수에는 쓰기 권한이있는 파일 개체와 사전에 fieldnames 매개 변수로 사용되는 키 목록이 필요합니다. 파일의 첫 번째 줄을 헤더로 쓰는 데 사용됩니다.
writeheader ()
이 메소드는 사전에있는 키 목록을 파일의 첫 번째 행으로 쉼표로 구분 된 행으로 작성합니다.
다음 예에서는 사전 항목 목록이 정의됩니다. 목록의 각 항목은 사전입니다. writrows () 메소드를 사용하여 쉼표로 구분 된 방식으로 파일에 기록됩니다.
persons=[
{'name':'Lata', 'age':22, 'marks':45},
{'name':'Anil', 'age':21, 'marks':56},
{'name':'John', 'age':20, 'marks':60}
]
csvfile=open('persons.csv','w', newline='')
fields=list(persons[0].keys())
obj=csv.DictWriter(csvfile, fieldnames=fields)
obj.writeheader()
obj.writerows(persons)
csvfile.close()
persons.csv 파일은 다음 내용을 보여줍니다-
name,age,marks
Lata,22,45
Anil,21,56
John,20,60
DictReader ()
이 함수는 기본 CSV 파일에서 DictReader 개체를 반환합니다. 리더 객체의 경우이 객체도 파일의 내용을 검색하는 반복자입니다.
csvfile=open('persons.csv','r', newline='')
obj=csv.DictReader(csvfile)
이 클래스는 파일의 헤더로 사용되는 사전 키를 반환하는 fieldnames 속성을 제공합니다.
print (obj.fieldnames)
['name', 'age', 'marks']
DictReader 개체에 루프를 사용하여 개별 사전 개체를 가져옵니다.
for row in obj:
print (row)
결과는 다음과 같습니다.
OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')])
OrderedDict([('name', 'Anil'), ('age', '21'), ('marks', '56')])
OrderedDict([('name', 'John'), ('age', '20'), ('marks', '60')])
OrderedDict 개체를 일반 사전으로 변환하려면 먼저 컬렉션 모듈에서 OrderedDict를 가져와야합니다.
from collections import OrderedDict
r=OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')])
dict(r)
{'name': 'Lata', 'age': '22', 'marks': '45'}