原始文件内容:
ewrdad sf
sf
dfa
模式 | 说明 | code & result |
r | 只读 | ['ewrdad sf\n', 'sf\n', 'dfa'] |
r+ | 可读可写,不创建。 不读直接写:从顶部开始写,会覆盖(没写的地方不覆盖,感觉就像个bug。。。) 先读再写:在最后追加写,不另外换行 | |
w | 只写,能创建,会覆盖(彻底覆盖,没写的部分也没有了) | |
w+ | 可读可写,能创建,会覆盖 | |
a | 只写,能创建,从尾部开始写(append追加模式) | |
a+ | 可读可写,能创建,从尾部开始写 | |
b | 有各种二进制格式打开一个文件的模式,如rb/rb+/wb/wb+/ab/ab+
写:w:\n自动转换为\r\n wb:不转换\n 换行符\t都不会转换
读:r:自动转换换行符、空格符 rb:不转换换行符、空格符 | abc abc |
二、与json.loads json.dumps 组合使用
在with open中使用loads dumps 可实现一行一行json文件的读写,且是以追加的形式写进去
with open('history_tasks','r+')as f:
lines = f.readlines()
if len(lines) == 1:
n = 1
else:
n=int(json.loads(lines[-1])['history_num'])
print('history_num : ',n)
value = {'num': n}
a=json.dumps(value)
扩展阅读:f的方法,如read、readline、readlines http://www.runoob.com/python/python-func-open.html
read返回的是一个字符串,readlines返回的是字符串列表
b的说明 https://blog.csdn.net/yizhuanlu9607/article/details/78084266