前言
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文件查看】