欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!
文章目录
- 前言
- 一、文件的写入
- 二、文件的追加
前言
Python作为一种高效且易于学习的编程语言,提供了一系列强大的文件操作功能,使得用户能够轻松地实现文件的读取、写入和管理。本章将详细讲解文件的写入以及追加操作。
本篇文章参考:黑马程序员
一、文件的写入
写入文件使用open
函数的”w”模式进行写入,常用的方法有以下两种:
- wirte():写入内容
- flush():刷新内容到硬盘中
注意:
- w模式:当文件不存在时会创建新文件
- w模式:当文件存在时会清空原有内容
# 打开文件
# 如果文件不存在,“w”模式会帮我们创建文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!") #内容写入到内存中(即缓冲区中)
# 使程序暂停 500000 秒(约139小时),在此期间程序不会执行任何其他操作。
time.sleep(500000)
双击打开test.txt文本文件,发现内容为空。
这是因为直接调用write
方法,内容并未真正写入文件,而是会积攒在程序的内存中(即缓冲区中)。
- 缓冲区: 在写入文件时,数据可能被保留在缓冲区中,而不是立即写入磁盘
- 刷新机制: 当调用
close
方法或程序结束时,缓冲区的内容会被自动写入文件 - 手动刷新: 如果需要在不关闭文件的情况下强制将缓冲区的内容写入磁盘,可以手动调用
flush
方法
这种设计可将数据暂时存储在缓冲区,减少对硬盘的写入次数,提高性能。
# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!") #内容写入到内存中
# flush刷新
f.flush() #将内存中积攒的内容,写入到硬盘文件中
time.sleep(500000)
双击打开test.txt文本文件,内容为“Hello World!”。
除此之外,close
方法内置了flush
方法的功能。
# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!") #内容写入到内存中
# 关闭文件
f.close() # close方法,内置了flush功能
双击打开test.txt文本文件,内容为“Hello World!”。
# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!")
但是我们在实践的过程中会发现,编写如上代码,没有调用flush
方法也没有调用close
方法,但是运行后双击打开test.txt还是会有"Hello World!"的内容。
这是因为如果 Python 程序正常结束,操作系统通常会在程序退出时自动刷新未写入的数据到文件。
二、文件的追加
追加写入文件使用open
函数的”a”模式进行追加,常用的方法有以下两种:
- wirte():写入内容
- flush():刷新内容到硬盘中
注意:
- a模式:当文件不存在时会创建新文件
- a模式:当文件存在时会在原有内容后面继续写入
- 可使用
\n
实现换行
# 打开文件
f=open("D:/test.txt","a",encoding="UTF-8")
# write写入
f.write("Hello python!")
# 换行写入
f.write("\nHello everyone!")
# close关闭
f.close()
双击打开test.txt文本文件,内容如下:
【例题】
有一份账单文件,记录了消费收入的具体记录,内容如下:
name date money type remarks
小周,2022-01-01,100000,消费,正式
小周,2022-01-02,300000,收入,正式
小周,2022-01-03,100000,消费,测试
小林,2022-01-01,300000,收入,正式
小林,2022-01-02,100000,消费,测试
小林,2022-01-03,100000,消费,正式
小林,2022-01-04,100000,消费,测试
小林,2022-01-05,500000,收入,正式
小张,2022-01-01,100000,消费,正式
小张,2022-01-02,500000,收入,正式
小张,2022-01-03,900000,收入,测试
小王,2022-01-01,500000,消费,正式
小王,2022-01-02,300000,消费,测试
小王,2022-01-03,950000,收入,正式
小刘,2022-01-01,300000,消费,测试
小刘,2022-01-02,100000,消费,正式
小刘,2022-01-03,300000,消费,正式
请将以上内容复制并保存为 bill.txt文件并满足以下要求:
1.读取文件;
2.将文件内标记为测试的数据行丢弃;
3.将文件写出到bill.txt.bak文件作为备份’
# 打开文件得到文件对象,准备读取
fr= open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw= open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循坏读取文件
for line in fr:
# 通过strip方法去除换行符
line=line.strip()
# 通过split方法按逗号切分,通过下标[4]得到remarks的内容
if line.split(",")[4]=="测试":
continue #进入下一次循坏,后面的内容跳过
# 将内容写出去
fw.write(line)
# 由于前面对内容进行了strip()的操作去除了换行符
# 所以要手动加上换行符
fw.write("\n")
# 关闭文件
fr.close()
fw.close()
运行后双击打开bill.txt.bak文件,文件内容如下: