前言
python自带模块csv可以将数据以csv格式输出到文件,也可以将csv数据读回
列表、元组数据写入和读取
【代码部分】
# coding:utf-8
import csv
# data也可以为列表
data = (
["1", "suner001", "b123456"],
["2", "suner002", "b123456"],
["3", "suner003", "b123456"],
["4", "suner004", "b123456"]
)
# 1)打开文件时,不加newline="",会默认写入一行后隔一行再写入
# 2)csv.writer()需要一个打开的文件对象,返回一个writer对象
# 3)writer对象提供了writerow()方法,用来在打开的文件中逐行写入逗号分隔的数据
f = open("user_data.csv","w",encoding="utf-8",newline="")
writer = csv.writer(f)
for d in data:
writer.writerow(d)
f.close()
# 4)csv.reader(f)需要一个打开的文件对象,返回一个reader可迭代对象对象
# 5)直接遍历取出数据即可
f = open("user_data.csv","r",encoding="utf-8")
reader = csv.reader(f)
for no, username, password in reader:
print("编号:%s,账号:%s,密码:%s" % (no, username, password))
f.close()
【控制台输出结果】
【打开user_data.csv文件查看】
字典数据写入和读取
【代码部分】
# coding:utf-8
import csv
# data为字典的数据列表
data = [
{"编号":1, "账号":"suner001", "密码":"b123456"},
{"编号":2, "账号":"suner002", "密码":"b123456"},
{"编号":3, "账号":"suner003", "密码":"b123456"},
{"编号":4, "账号":"suner004", "密码":"b123456"}
]
# 1)csv.DictWriter(f, key_list),需要一个打开的文件对象,和写入的头部(即第一行的key值),返回一个writer对象
# 2)dict_writer.writeheader()写入第一行的头数据(key)
# 3)循环字典列表数据,依次写入
f = open("user_data.csv", "w", encoding="utf-8", newline="")
key_list = [k for k in data[0].keys()] # 取出key的列表
# print(key_list) # ['密码', '编号', '账号']
dict_writer = csv.DictWriter(f, key_list)
dict_writer.writeheader()
for d in data:
dict_writer.writerow(d)
f.close()
f = open("user_data.csv","r",encoding="utf-8")
dict_reader = csv.DictReader(f)
for row in dict_reader:
print(row)
【控制台输出结果】
【打开user_data.csv文件查看】
优化代码
【代码部分】
# coding:utf-8
import csv
def list_data_write_csv(list_data,file_name):
"""list数据写入csv"""
with open(file_name, "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
for d in list_data:
writer.writerow(d)
return "数据全部写入成功"
def list_data_read_csv(file_name):
"""从csv中取出list数据"""
with open(file_name, "r", encoding="utf-8") as f:
reader = csv.reader(f)
for no, username, password in reader:
print ("编号:%s,账号:%s,密码:%s" % (no, username, password))
return "数据全部读取完毕"
def dict_data_write_csv(dict_data,file_name):
"""dict数据写入csv"""
with open(file_name, "w", encoding="utf-8", newline="") as f:
key_list = [k for k in dict_data[0]] # 取出key的列表
dict_writer = csv.DictWriter(f, key_list)
dict_writer.writeheader()
for d in dict_data:
dict_writer.writerow(d)
return "数据全部写入成功"
def dict_data_read_csv(file_name):
"""从csv中取出dict数据"""
with open(file_name, "r", encoding="utf-8") as f:
dict_reader = csv.DictReader(f)
for row in dict_reader:
print(row)
return "数据全部读取完毕"
list_data= [[1, "wang01", "123"], [2, "wang02", "123"], [3, "wang03", "123"]]
dict_data = [{"编号":1, "账号":"wang001", "密码":"123"}, {"编号":2, "账号":"wang002", "密码":"123"}]
print(list_data_write_csv(list_data,"user_info.csv"))
print(list_data_read_csv("user_info.csv"))
print(dict_data_write_csv(dict_data,"user_info01.csv"))
print(dict_data_read_csv("user_info01.csv"))
【控制台输出结果】
【打开csv文件查看】