一.文件操作(二)
1.对文件读写操作
保存数据最简单的方式就是将其保存到文件中。通过输出写入文件,即便是关闭包含程序输出的终端窗口,这些输出也依然存在,还可以编写程序来将这些输出读取到内存中并进行处理。
json.dump
先把要写的内容存到内存里面去
在把内存里面的内容拿出来
转到文件里面去
(文件在磁盘上)
要将文本写入文件,你在调运open()时需要提供一个参数,告诉python你要写入打开的文件了。
‘w’ 创建一个新文件,把旧文件覆盖掉
f1 = open('test2','w',)
f1.write('this is a test from old ......')
f1 = open('test2','w',)
f1.write('this is a test from new ......')
#因为用的'w'所以第二次写入的时候发现把第一次写入的内容覆盖了
‘a’ 文件存在时 在文件后追加内容 文件不存在时 创建文件
f1 = open('test2','a',encoding='utf-8')
f1.write('康桥是今晚的沉默')
f1 = open('test2','a',encoding='utf-8')
f1.write('康桥是今晚的沉默')
#'a' 写的时候就是在文件后追加内容 所以之前写的内容也都还在
‘r+’ 对文件以一个读写的方式打开
f1 = open('test2','r+',encoding='utf-8')
print(f1.read()) #只有在先读的时候 写是忘文件里面追加的写
#如何不先读 直接写的话会直接覆盖原文件内容
f1.write('\n沉默是今晚的康桥')
f1.close()
#'r+'对文件可以读写 可以读取文件的内容 也可以写入
‘w+’ 先创建文件 写读
f1 = open('test5','w+',encoding='utf-8')
f1.write('沉默')
f1.seek(0) #调文件指针到开始的位置 因为写了内容之后文件指针在末尾
print(f1.read())
f1.close()
‘a+’ 追加写 读
#这个跟 ‘w+’ 不同的是 写内容是追加的写 不会覆盖以前写的内容
f1 = open('test5','a+',encoding='utf-8')
f1.write('\n沉默')
f1.seek(0)
print(f1.read())
f1.close()
除此以外,还存在追加读写和二进制读写
运用场景 1 网络传输 2 视频文件
二进制写’wb’
f1 = open(‘test4’,‘wb’)
二进制读’rb’
f1 = open(‘test4’,‘rb’)
(外加写进度条的例子)
.flush()强制实时刷新将缓存的内容写入文件
import sys,time
for i in range(50):
sys.stdout.write('#') #执行方法的输入 sys.stdout方法写到标准输出
sys.stdout.flush() #输入一个'#' 刷新打印一个
# time.sleep(0.1) #一次循环玩停上0.秒
这个例子在pycharm看的效果不太好
建议在linux虚拟机的虚拟环境上执行 就可以看出强制刷新缓存的内容写入文件的效果
2.修改文件内容
原理
修改一个文件
1)打开文件—>修改
2)打开文件 —> 修改的是一个生成的一个新文件 —> 用新文件去替换旧文件
先创建要修改的文件named.