Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용하여 CSV 파일 읽기 및 쓰기

<시간/>

CSV(쉼표로 구분된 값의 약자) 형식은 스프레드시트에서 일반적으로 사용되는 데이터 형식입니다. Python 표준 라이브러리의 csv 모듈은 CSV 파일에 대한 읽기/쓰기 작업을 수행하는 클래스와 메서드를 제공합니다.

작가()

csv 모듈의 이 함수는 데이터를 구분된 문자열로 변환하고 파일 개체에 저장하는 기록기 개체를 반환합니다. 함수에는 매개변수로 쓰기 권한이 있는 파일 객체가 필요합니다. 파일에 기록된 모든 행은 개행 문자를 발행합니다. 줄 사이의 추가 공백을 방지하기 위해 줄 바꿈 매개 변수를 ''로 설정합니다.

작가 클래스에는 다음과 같은 메서드가 있습니다.

쓰기 행()

이 함수는 항목을 쉼표 문자로 구분하여 반복 가능한 항목(목록, 튜플 또는 문자열)에 씁니다.

쓰기 행()

이 함수는 반복 가능한 목록을 매개변수로 사용하고 각 항목을 파일의 쉼표로 구분된 항목 줄로 씁니다.

다음 예제는 write() 함수의 사용을 보여줍니다. 먼저 파일이 'w' 모드로 열립니다. 이 파일은 작성기 개체를 얻는 데 사용됩니다. 튜플 목록의 각 튜플은 writerow() 메서드를 사용하여 파일에 기록됩니다.

>>> import csv>>> people=[('Lata',22,45),('Anil',21,56),('John',20,60)]>>> csvfile=open ('persons.csv','w', newline='')>>> obj=csv.writer(csvfile)>>> person in people:obj.writerow(person)>>> csvfile.close() 

현재 디렉토리에 'persons.csv' 파일이 생성됩니다. 다음 데이터가 표시됩니다.

라타,22,45아닐,21,56존,20,60

각 행을 개별적으로 쓰기 위해 목록을 반복하는 대신 writerows() 메서드를 사용할 수 있습니다.

>>> csvfile =open('persons.csv','w', newline='')>>> obj =csv.writer(csvfile)>>> obj.writerows(명)>>> obj. 닫기()

읽기()

이 함수는 csv 파일에서 줄의 반복자를 반환하는 판독기 개체를 반환합니다. 일반 for 루프를 사용하면 파일의 모든 행이 다음 예와 같이 표시됩니다.

>>> csvfile=open('persons.csv','r', newline='')>>> obj=csv.reader(csvfile)>>> obj:print(row)[' 라타', '22', '45']['아닐', '21', '56']['존', '20', '60']

독자 객체는 반복자이기 때문에 내장된 next() 함수는 csv 파일의 모든 행을 표시하는 데에도 유용합니다.

>>> csvfile =open('persons.csv','r', newline='')>>> obj =csv.reader(csvfile)>>> 동안 True:try:row=next(obj) StopIteration:break를 제외한 인쇄(행)

csv 모듈은 방언 클래스도 정의합니다. 방언은 CSV 프로토콜을 구현하는 데 사용되는 표준 집합입니다. 사용 가능한 방언 목록은 list_dialects() 함수로 얻을 수 있습니다.

>>> csv.list_dialects()['엑셀', '엑셀 탭', '유닉스']

DictWriter()

이 함수는 DictWriter 개체를 반환합니다. 작가 객체와 유사하지만 행은 사전 객체에 매핑됩니다. 이 함수에는 쓰기 권한이 있는 파일 객체와 사전에서 fieldnames 매개변수로 사용되는 키 목록이 필요합니다. 파일의 첫 번째 줄을 헤더로 쓰는 데 사용됩니다.

쓰기 헤더()

이 메서드는 파일의 첫 번째 줄에 쉼표로 구분된 줄로 사전의 키 목록을 씁니다.

다음 예에서는 사전 항목 목록이 정의됩니다. 목록의 각 항목은 사전입니다. writrows() 메서드를 사용하여 쉼표로 구분하여 파일에 기록합니다.

>>> people=[{'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. 닫기()

파일은 다음과 같은 내용을 보여줍니다.

이름,나이,marksLata,22,45Anil,21,56John,20,60

DictReader()

이 함수는 기본 CSV 파일에서 DictReader 개체를 반환합니다. 독자 객체의 경우와 마찬가지로 이 객체도 파일의 내용을 검색하는 데 사용하는 반복자입니다.

>>> csvfile =open('persons.csv','r', newline='')>>> obj =csv.DictReader(csvfile)

이 클래스는 fieldnames 속성을 제공하여 파일의 헤더로 사용되는 사전 키를 반환합니다.

>>> obj.fieldnames['이름', '나이', '표시']

DictReader 개체에 루프를 사용하여 개별 사전 개체를 가져옵니다.

>>> obj:print(row)의 행

결과는 다음과 같습니다.

OrderedDict([('이름', '라타'), ('나이', '22'), ('marks', '45')])OrderedDict([('이름', '아닐'), ('나이', '21'), ('marks', '56')])OrderedDict([('name', 'John'), ('age', '20'), ('marks', ' 60')])

OrderedDict 개체를 일반 사전으로 변환하려면 먼저 컬렉션 ​​모듈에서 OrderedDict를 가져와야 합니다.

>>> 컬렉션 import OrderedDict>>> r=OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')])>>> dict(r){'이름':'라타', '나이':'22', '표시':'45'}

이 기사에서는 csv 모듈의 기능에 대해 설명했습니다.