Python中内置了csv模块,用于读写.csv文件
csv写入文件:
1、使用 writerow() 方法
writerow() 方法会将传入的数据填充为 csv 文件的一行
使用 writerow() 方法写入 list 型数据(将数据写到当前目录下的 names.csv 文件中):
import csv
datas = [['1', 'mark'],['2', 'hulk'],['3', 'juck']]
with open('names.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile)
for data in datas :
spamwriter.writerow(data)
输出文件结果:
使用 writerow() 方法写入 dict 型数据(将数据写到当前目录下的 names.csv 文件中):
import csv
datas = [
{'first_name': 'Baked', 'last_name': 'Beans'},
{'first_name': 'Lovely', 'last_name': 'Spam'},
{'first_name': 'Wonderful', 'last_name': 'Spam'}
]
with open('names.csv', 'w', newline='') as csvfile :
fieldnames = ['first_name', 'last_name'] # 定义列标题名
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # writeheader() 方法用于写入标题
for data in datas :
writer.writerow(data)
输出文件结果:
2、使用 writerows() 方法
writerows() 方法传入一个可迭代的对象作为参数,如果传入的是一个 list 类型数据,它会将 list 中的每一项作为一行数据写入;如果传入的是一个 dict 类型数据,它会将 dict 中的 key 值作为每一行的数据写入;如果传入的是一个 str 类型的数据,则它会将字符串的每一个字符作为一行数据写入。
使用 writerows() 方法写入 list 型数据(将数据写到当前目录下的 names.csv 文件中):
import csv
datas = [['1', 'mark'],['2', 'hulk'],['3', 'juck']]
with open('names.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile)
spamwriter.writerows(datas)
输出文件结果:
使用 writerows() 方法写入 dict 型数据(将数据写到当前目录下的 names.csv 文件中):
注意:这里的字典数据中的 key 值必须要与写入的列标题名称相对应,否则会报 ValueError 异常!
import csv
datas = [
{'first_name': 'Baked', 'last_name': 'Beans'},
{'first_name': 'Lovely', 'last_name': 'Spam'},
{'first_name': 'Wonderful', 'last_name': 'Spam'}
]
with open('names.csv', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name'] # 列标题名称
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # 写入标题
writer.writerows(datas)
输出文件结果:
使用 writerows() 方法写入 str 型数据(将数据写到当前目录下的 names.csv 文件中):
import csv
datas = "hello world"
with open('names.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile)
spamwriter.writerows(datas)
输出文件结果:
csv读取文件:
csv文件内容如下:
1、使用 reader() 方法( 读取当前目录下的 names.csv件)
使用 reader() 方法读取数据,结果将每一行数据封装成一个 list 返回,即下面一个 row 就是一个 list 。
import csv
with open('names.csv') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader :
print(row) # 将每一行数据封装为一个list返回
输出结果为:
2、使用 DictReader() 方法( 读取当前目录下的 names.csv件)
使用 DictReader() 方法读取数据, 结果将每一行数据封装为一个 OrderedDict 返回,即下面一个 row 就是一个 OrderedDict ,可以通过字典的 key 获得其对应的值。
import csv
with open('names.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader :
print(row) # 将每一行数据封装为一个 OrderedDict 返回
print(row['first_name'],":",row['last_name']) # 可以通过key获得对应的值(key即csv文件对应的列名)
输出结果为:
参考:https://docs.python.org/3.6/library/csv.html