一、csv文件
CSV是以逗号间隔的文本文件,XLS是电子表格,包含文本、数值、公式和格式。当不需要公式和格式表格可用CSV格式保存。
引入
import csv
写入:
rows = [['张三',10],['李四',22],['王五',18]]
with open('test1.csv','w',newline='')as csv_file:
writer = csv.writer(csv_file)
for row in rows:
writer.writerow(row)
csv是一行一行写入的。
如何解决csv文件的乱码问题。
先将CSV用txt记事本打开,然后选择ANSI编码方式。另存为,点编码这里,这里的编码有这么几种选择ANSI/Unicode/Unicode big endian/UTF-8 2. 选择ANSI,然后保存,再用Excel打开,就不会有乱码了。
读取:
用f文件读取的话,格式是这样的:
with open('test.txt','r')as f:
用csv文件读取,可以和读取文件作比较:
with open('test1.csv','r')as read_file:
reader = csv.reader(read_file)
print(reader)
print([row for row in rows])
字典写入:
data_dic = [
{
'name':'zhangsan',
'age':'15'
},{
'name':'lisi',
'age':'25'
}
]
with open('dict.csv','w',newline='')as csv_file:
keys = []
for key in data_dic[0].keys():
print(key)
keys.append(key)
writer = csv.DictWriter(csv_file,fieldnames=keys)
writer.writeheader()
for dict in data_dic:
writer.writerow(dict)
读取
with open('test2.csv','r')as csv_file:
reader = csv.DictReader(csv_file)
print([row for row in reader])
输出结果为:
[OrderedDict([('张三', '李四'), ('10', '22')]), OrderedDict([('张三', '王五'), ('10', '18')])]
二、json文件的写入。
引入:
import json
info = [
{
'name':'张三',
'age':14,
'fond':'play'
}
]
with open('info.txt','w')as f:
# indent 缩进字符个数
# ensure_ascii =False 将unicode字符转换成中文
f.write(json.dumps(info,indent=2,ensure_ascii=False))
写入的结果:
错误信息:“json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)”
用单引号包裹字符串导致的,改为双引号即可。
三、常用的打开方式:
r:以只读方式打开文件
rb:以二进制方式打开文件
r+:以读写方式打开文件
rb+:以二进制读写方式打开文件
w:以写入方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。
wb:以二进制写入方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。
w+:以读写方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。
a:以追加方式打开文件,如果文件存在,从文件结尾开始写入,如果不存在,则创建新文件来写入。
a+:以读写方式打开文件,如果文件存在,从文件结尾开始写入,如果不存在,则创建新文件来写入。