python对csv文件读写的两种方式 和 读写文件编码问题处理

时间:2022-01-07 18:19:19
'''
如果文件读取数据出错,可以考虑加一个encoding属性,取值可以是:utf-8,gbk,gb18030
或者加一个属性error,取值为ignore,例如
open(path, encoding='gb18030', errors='ignore')
'''
'''
1.csv数据为:
1,2,3
4,5,6
7,8,9 '''
import csv
def read_file1():
with open('1.csv','r') as fp:
# reader相当于一个迭代器
reader = csv.reader(fp)
# 使用next,那么就相当于把指针fp向下移动一行
next(reader)
for read in reader:
print(read) def read_file2():
with open('1.csv','r') as fp:
# 将csv的数据转化为字典,这个时候reader里面就不再包含第一行数据
reader = csv.DictReader(fp)
for read in reader:
print(read['2']) read_file1()
'''
输出:
['4', '5', '6']
['7', '8', '9']
'''
read_file2()
'''
输出:
5
8
''' def write_file1():
header = ['user', 'age']
values = [
('张三', '12'),
('李四', '13')
]
# newline默认为'\n',意思就是每写入一条数据就会多一个换行
# 如果这里编码出错,可以指定encoding的值
with open('2.csv','w',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(header)
writer.writerows(values) write_file1() def write_file2():
header = ['user', 'age']
values = [
{'user':'张三','age': '12'},
{'user':'李四','age':'13'}
]
# newline默认为'\n',意思就是每写入一条数据就会多一个换行
# 如果这里编码出错,可以指定encoding的值
with open('2.csv','w',newline='') as fp:
writer = csv.DictWriter(fp,header)
# 写入字典头
writer.writeheader()
# 将字典数据写入
writer.writerows(values) write_file2() '''
两个函数执行后的结果一样,文件2.csv中数据为:
user,age
张三,12
李四,13 '''