1. csv模块说明:
1.1 默认读写用逗号做分隔符(delimiter),双引号作引用符(quotechar)
1.2 用writer写数据None被写成空字符串,浮点型调用repr()转化成字符串。非字符
串型数据被str()成字符串存储。
1.3 open函数
import locale ; locale.getpreferredencoding()# 查看本地编码'cp936'
open('some.csv', newline='', encoding='utf-8')
# 使用系统默认编码将文件解码为unicode可使用不同的编码解码文件
# 如果newline=''没有指定,嵌入引用字段内换行符将不会被正确地解释
4)RFC 4180 提供了一些标准:
# 内容为纯文本;包含记录
# 每条记录是用单个分隔字符将各属性分隔
# 每条记录的属性序列是相同的pandas可以通过PyPI的 pip安装 。
2.模块内容
2.1模块常量:引用约定
quoting=csv.QUOTE_MINIMAL =0 # writer对象只引用那些包含特殊字符
quoting=csv.QUOTE_ALL=1 # writer对象引用所有字段
# 如字段分隔符,quotechar或任何字符
lineterminator。
quoting=csv.QUOTE_NONNUMERIC=2 # writer对象引用所有非数字字段。
# 指示读者将所有非引用字段转换为float类型。
quoting=csv.QUOTE_NONE=3,escapechar='#39;# writer对象不引用字段
# 如未设置escapechar错误抛出;指示reader不对引号字符执行特殊处理。
2.21.函数:
csv.reader(f,dialect ='excel',** fmtparams )# 返回一个读取器对象,它将迭代给定csv文件中的行。
# 属性:
csv.reader().dialect
csv.reader().line_num
csv.writer(f,dialect ='excel',** fmtparams ) # 返回一个编写器对象,负责将用户的数据转换为给定类文件对象上的分隔字符串
# 属性方法:
writer.writerow
writer.writerows
writer.dialect
csv.DictReader()#字典读
# 方法:
csv.DictReader().__next__()# 称之为next(reader)
# 属性:
csvreader.dialect # 解析器使用的方言的只读描述。
csvreader.line_num # 从源迭代器读取的行数。这与返回的记录数不同,因为记录可以跨越多行。
csvreader.fieldnames# 从文件中读取第一条记录时初始化此属性
csv.DictWriter()
# 方法:
csvwriter.writerow(row) # 将row写入writer的文件对象,根据当前方言进行格式化。支持迭代
csvwriter.writerows(rows)# 将行中的所有元素写入编写器的文件对象,并根据当前方言进行格式化。支持迭代
DictWriter.writeheader() # 公共方法:用字段名称写一行
# 属性:
csvwriter.dialect # 使用的方言只读描述
# 返回所有已注册方言的名称。
# 数据读取
# import csv
# with open(r'C:\Users\Alienware\Desktop\test.csv','r') as f:
# all = csv.reader(f) #读取所有数据 返回一个csv对象
# print(type(all))
# for i in all: #遍历csv对象 返回csv文件中的所有数据 list类型
# print(i)
# 数据写入import csv#newline=''表示新行用空字符表示 这样换行写入数据时就不会出现空行
with open(r'C:\Users\Alienware\Desktop\test.csv','a',newline='') as f:
all = csv.writer(f)
#传入列表类型的数据 第一个元素对应第一列 第二个元素对应第二列
# all.writerow(['admin',7]) #一行一行写入
all.writerows([['name','zhangsan'],['class','baoan10']]) #多行写入