python csv 형식의 파일 읽 기

5894 단어 pythoncsv
원본 주소:http://www.cnblogs.com/sislcb/archive/2008/12/15/1355481.html
reader(csvfile[, dialect='excel'][, fmtparam])
매개 변수 표:
csvfile         필요 한 것 은 교체 (Iterator) 를 지원 하 는 대상 이 며, 매번 next 방법 을 호출 할 때마다 되 돌아 오 는 값 은 문자열 (string) 입 니 다. 일반적인 파일 (file) 대상 이나 목록 (list) 대상 이 적 용 됩 니 다. 파일 대상 이 라면 'b' 로고 파 라미 터 를 추가 해 야 합 니 다.dialect         인 코딩 스타일 은 기본적으로 excel 방식, 즉 쉼표 (,) 구분 이 고 csv 모듈 도 excel - tab 스타일, 즉 탭 문자 (tab) 구분 을 지원 합 니 다.다른 방식 은 스스로 정의 해 야 하 며, register 를 호출 할 수 있 습 니 다.dialect 방법 으로 등록 및 listdialects 방법 으로 등 록 된 모든 인 코딩 스타일 목록 을 조회 합 니 다.fmtparam         포맷 매개 변 수 는 이전 dialect 대상 이 지정 한 인 코딩 스타일 을 덮어 쓰 는 데 사 용 됩 니 다.
예:
import csv

reader = csv.reader(file('your.csv', 'rb'))
for line in reader:
    print line

 
writer(csvfile[, dialect='excel'][, fmtparam])
매개 변수 표 (약: reader, 참조)
예:
import csv

writer = csv.writer(file('your.csv', 'wb'))
writer.writerow(['Column1', 'Column2', 'Column3'])
lines = [range(3) for i in range(5)]
for line in lines:
    writer.writerow(line)

 
DictReader
reader 와 차이 가 많 지 않 습 니 다. CSV 를 읽 는 데 사 용 됩 니 다. 교체 형식 이 아 닌 사전 (dict) 형식의 반환 만 생 성 됩 니 다.
 
DictWriter
 제 가 주로 말씀 드 리 고 싶 은 것 은 DictWriter 입 니 다. 제 가 왜 DictWriter 를 사용 하 는 것 을 좋아 하 겠 습 니까? 일반적인 writer 는 손 으로 목록 을 구축 해 야 하기 때 문 입 니 다. 특히 양식 을 통 해 제출 할 때 저 는 예전 에 zope 플랫폼 에서 개발 해 왔 기 때문에 zope 는 고급 표 증빙 모델 을 지원 합 니 다.즉, 폼 을 정의 할 때 해당 하 는 로 고 를 추가 하여 제출 한 폼 데 이 터 를 자동 으로 기록 (records) 형식 으로 만 들 수 있 습 니 다. 즉, 모든 데 이 터 를 사전 목록 으로 만 드 는 것 입 니 다.이렇게 하면 나 는 폼 데 이 터 를 DictWriter 에 직접 전달 하여 csv 를 생 성 할 수 있다. 물론 이것 은 네가 데이터 의 정확성 을 확보 할 수 있 는 전제 에서 이다.자, 다음은 제 가 이 zope 의 고급 폼 데이터 형식 을 간단하게 설명 하 겠 습 니 다.
예:
<form action='test_form_action' method=post>
            <input type="text" name="rows.Column1:records" value="0" />
            <input type="text" name="rows.Column2:records" value="1" />
            <input type="text" name="rows.Column3:records" value="2" />
            <input type="text" name="rows.Column4:records" value="3" />
    <br />
            <input type="text" name="rows.Column1:records" value="0" />
            <input type="text" name="rows.Column2:records" value="1" />
            <input type="text" name="rows.Column3:records" value="2" />
            <input type="text" name="rows.Column4:records" value="3" />
    <br />
            <input type="text" name="rows.Column1:records" value="0" />
            <input type="text" name="rows.Column2:records" value="1" />
            <input type="text" name="rows.Column3:records" value="2" />
            <input type="text" name="rows.Column4:records" value="3" />
    <br />
            <input type="text" name="rows.Column1:records" value="0" />
            <input type="text" name="rows.Column2:records" value="1" />
            <input type="text" name="rows.Column3:records" value="2" />
            <input type="text" name="rows.Column4:records" value="3" />
    <br />
            <input type="text" name="rows.Column1:records" value="0" />
            <input type="text" name="rows.Column2:records" value="1" />
            <input type="text" name="rows.Column3:records" value="2" />
            <input type="text" name="rows.Column4:records" value="3" />
    <br />
<input type="submit" value="Submit CSV" />
</form>

 양식 제출 후 결 과 는:
rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}]

이렇게 하면 DictWriter. writerows 방법 을 직접 호출 하여 처리 할 수 있 습 니 다.
import csv

fieldnames = ['Column1', 'Column2', 'Column3', 'Column4']
dict_writer = csv.DictWriter(file('your.csv', 'wb'), fieldnames=fieldnames)
dict_writer.writerow(fieldnames) # CSV         
dict_writer.writerows(rows)  # rows         

* 메모: 여기 csv 파일 기록 은 External Method 의 지원 이 필요 합 니 다. zope 에서 권한 샌 드 박스 의 문제 로 csv 모듈 을 직접 조작 하여 파일 시스템 을 읽 을 수 없 기 때 문 입 니 다.
 
이렇게 사용 하 는 것 이 매우 편리 하지 않 습 니까? 위 폼 을 만 드 는 DTML 코드 를 드 립 니 다.
<form action='test_form' method=post>
<dtml-in "range(5)">
    <dtml-in "range(4)">
        <input type="text" name="rows.Column&dtml-sequence-number;:records" value="&dtml-sequence-item;" />
    </dtml-in>
<br />
</dtml-in>
<input type="submit" value="Submit CSV" />
</form>

당신 은 자신의 필요 에 따라 이 폼 의 생 성 을 고 칠 수 있 습 니 다.

좋은 웹페이지 즐겨찾기