今天在学习文件操作的时候,对json文件进行操作。
import json
with open('ceshi.json', 'r+') as f:
l = json.load(f)
print(l)
>>> 123
注意json文件需要有值,没有会报错。
但是,我既然r+了,意味着我还需要对其进行写操作。我希望把123加1再写入json文件
with open('ceshi.json', 'r+') as f:
l = json.load(f)
print(l)
l += 1
json.dump(l, f)
打开json文件,123变成了123124,再执行变成了123124123125
上网进行查询,原来是r,w,r+,w+,a等拥有不同的特性,在操作文件后,他们的光标位置是需要考虑的
我运用f.tell()返回光标位置了解到
参数 | 操作 | 光标位置 |
---|---|---|
r | read | 从开头到末尾 |
r+ | read | 从开头到末尾(再使用write操作会从末尾添加) |
r+ | write | 从开头到写了N个字符的位置(再使用read会从N+1开始读) |
w | write | 从开头到末尾(会覆盖所有内容) |
w+ | read | 报错(原因是程序会打开文件后直接删除里面的内容) |
w+ | write | 从开头到末尾(再使用read会报错,因为光标再末尾) |
a | write | 从末尾到新文件末尾 |
a+ | read | 从末尾开始,read报错 |
a+ | write | 从末尾开始到新文件末尾 |
总结,重点还是注意光标位置以及w+会直接删除文件内容。
下面是操作光标的方法
f.seek(offset,whence)
#移动光标方法
offset 表示偏移量,whence 表示移动到的位置,0表开头,1表当前位置,2表末尾
网友评论