展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

文件写入和追加

  • 内容刷新
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
  • 注意事项
文件如果不存在,使用”w”模式,会创建新文件
文件如果存在,使用”w”模式,会将原有内容清空
close()方法,带有flush()方法的功能
  • 代码案例
f = open("D:/test.txt", "w", encoding="UTF-8")
# write写入
f.write("Hello World!!!") # 内容写入到内存中
# flush刷新
f.flush() # 将内存中积攒的内容,写入到硬盘的文件中
# close关闭
f.close() # close方法,内置了flush的功能的
# 打开一个存在的文件
f = open("D:/test.txt", "w", encoding="UTF-8")
# write写入、flush刷新
f.write("黑马程序员")
# close关闭
f.close()
  • 文件追加注意事项
a模式,文件不存在,会创建新文件
a模式,文件存在,会在原有内容后面继续写入
可以使用”\n”来写出换行符
  • 代码案例
# 打开文件,不存在的文件
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入
f.write("黑马程序员")
# flush刷新
f.flush()
# close关闭
f.close()
# 打开一个存在的文件
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入、flush刷新
f.write("\n月薪过万")
# close关闭
f.close()
  • 应用实例
读取文件
将文件写出到bill.txt.bak文件作为备份
同时,将文件内标记为测试的数据行丢弃
实现思路:
open和r模式打开一个文件对象,并读取文件
open和w模式打开另一个文件对象,用于文件写出
for循环内容,判断是否是测试不是测试就write写出,是测试就continue跳过
2个文件对象均close()
  • 代码实现
# 打开文件得到文件对象,准备读取
fr = open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw = open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循环读取文件
for line in fr:
line = line.strip()
# 判断内容,将满足的内容写出
if line.split(",")[4] == "测试":
continue # continue进入下一次循环,这一次后面的内容就跳过了
# 将内容写出去
fw.write(line)
# 由于前面对内容进行了strip()的操作,所以要手动的写出换行符
fw.write("\n")
# close2个文件对象
fr.close()
fw.close() # 写出文件调用close()会自动flush()
posted @   DogLeftover  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示