一、csv模块读文件
1.csv.reader
–可迭代对象
通过索引获取文档内容
def csv_read():file = open('./txt/names.csv','r')reader = csv.reader(file)head = next(reader)print(head)for line in reader:print('{}:{} -- {}:{}'.format(head[0],line[0],head[1],line[1]))
输出
['first_name', 'last_name']first_name:Wonderful -- last_name:Spamfirst_name:Lovely -- last_name:Spamfirst_name:Baked -- last_name:Beans
2.csv.reader
的namedtuple
def csv_read_nametuple():'''namedtuple 可通过属性访问'''file = open('./txt/names.csv', 'r')reader = csv.reader(file)head = next(reader)print(head)# 构建一个namedtuple的模板from collections import namedtupleRow = namedtuple('Rom',head)print(Row)for r in reader:row = Row(*r)# 读取的csv中每一行的内容,实例化Row模板# 通过属性访问print('{}:{} -- {}:{}'.format(head[0],row.first_name,head[1],row.last_name))
输出同上
3.csv.DictReader
以字典的形式读取
获取表头reader.fieldnames
def csv_read_dict():file = open('./txt/names.csv', 'r')reader = csv.DictReader(file)fieldname = reader.fieldnames# 获取表头for r in reader:print('{}:{} -- {}:{}'.format(fieldname[0], r['first_name'],fieldname[1], r['last_name']))
输出同上
二、csv模块写文件
1. 单个属性写入csv.writer
import csvdef csv_write():fw = open('./txt/charater2number.csv','w',newline='',encoding='utf-8')write = csv.writer(fw)number = range(65, 70)char = list(map(chr, number))for i in range(len(char)):write.writerow([char[i],number[i]])#if __name__ == '__main__':csv_write()
不设置newline
时,默认是\n
3. 元组形式写入csv.Writer
def write_tuple():file = open('./txt/person information.csv','w',encoding='utf8',newline='')head = ['ID','Name','Gender']rows = [(1,'Amy','F'),(2,'Tommy','M'),(3,'Blair','F'),]writer = csv.writer(file)writer.writerow(head)#写入表头writer.writerows(rows) #写入主题内容,接收列表对象file.close()
2. 字典形式写入csv.DictWriter
写入的单行writer.writerow
和多行writer.writerows
writer.writeheader()# 写入文件头
import csvdef csv_write_rows():with open('./txt/names.csv', 'w', newline='') as csvfile:fieldnames = ['first_name', 'last_name']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()# 写入文件头# 单行写入# writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})# writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})# writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})# 多行写入writer.writerows([{'first_name': 'Wonderful', 'last_name': 'Spam'},\{'first_name': 'Lovely', 'last_name': 'Spam'}, \{'first_name': 'Baked', 'last_name': 'Beans'}])if __name__ == '__main__':csv_write_rows()