요구사항 배경
최근 회사를 위한 이메일 일일 프로그램이 개발되었습니다. 이메일은 일반적으로 표, 사진, 첨부 파일로 구성됩니다. 첨부파일은 기본적으로 txt 파일로 작성되는 것이 일반적인데, PM은 이메일에 포함된 첨부파일을 엑셀 등의 소프트웨어로 바로 열 수 있기를 희망한다. 엑셀이 몇배는 더 클텐데, csv 파일은 기본으로 되어있습니다. 엑셀로도 열었는데, 그래도 텍스트 파일이라 크기도 작고 저장도 쉬웠기 때문에 결국 csv 모듈을 이용해서 파일을 저장하기로 했습니다.
Python으로 csv 파일 쓰기
Python은 csv 파일을 읽고 쓸 수 있는 모듈을 제공합니다. 여기서는 쓰기만 사용합니다. 주요 목적은 문자 깨짐 문제를 해결하는 것입니다.
def save2csv(file_name=None, header=None, data=None): """ 保存成CSV格式文件,方便Excel直接打开 :param file_name: 保存的文件名 :param header: 表头,每一列的名字 :param data: 具体填充数据 :return: """ if file_name is None or isinstance(file_name, basestring) is False: raise Exception('保存CSV文件名不能为空,并且必须为字符串类型') if file_name.endswith('.csv') is False: file_name += '.csv' file_obj = open(file_name, 'wb') file_obj.write(codecs.BOM_UTF8) # 防止乱码 writer = csv.writer(file_obj) if data is None or isinstance(data, (tuple, list)) is False: raise Exception('保存CSV文件失败,数据为空或者不是数据类型') if header is not None and isinstance(header, (tuple, list)) is True: writer.writerow(header) for row in data: writer.writerow(row)
참고: 글자 깨짐을 방지하기 위해 세 가지 문장이 있습니다
file_obj = open(file_name, 'wb') file_obj.write(codecs.BOM_UTF8) # 防止乱码 writer = csv.writer(file_obj)
파일 헤더에 codecs.BOM_UTF8을 작성하면 파일이 모두 UTF-8 인코딩 형식으로 되어 있습니다.
읽어주셔서 감사합니다. 모두에게 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!