Python基础(十六):文件读写,靠这一篇就够了!

时间:2021-12-20 19:30:37

文件读写的流程

类比windows中手动操作txt文档,说明python中如何操作txt文件?

Python基础(十六):文件读写,靠这一篇就够了!

什么是文件的内存对象(文件句柄)?

Python基础(十六):文件读写,靠这一篇就够了!

演示怎么读取文件

  • ① 演示如下
f = open(r"D:\python_project\mxxl\test.txt", "r", encoding="utf-8")
data = f.read()
print(data[:245])
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

  • ② 一个很奇怪的现象?
f = open(r"D:\python_project\mxxl\test.txt", "r", encoding="utf-8")
data = f.read()
data1 = f.read()
print(data[:245])
print("-------------------------------------")
print(data1[:245])
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

问题:我们读取了2遍内容,为什么只显示了一次读取的结果呢?对于上述问题,我们用一张图回答上述问题。

Python基础(十六):文件读写,靠这一篇就够了!

Python基础(十六):文件读写,靠这一篇就够了!

演示怎么写文件

f = open(r"D:\python_project\mxxl\test2.txt","w",encoding="utf-8")
f.write("我爱北京*")
f.close()

Python基础(十六):文件读写,靠这一篇就够了!

假如我们在写一句*上太阳升,会出现啥情况呢?

f = open(r"D:\python_project\mxxl\test2.txt","w",encoding="utf-8")
f.write("*上太阳升")
f.write("很好,很好")
f.close()

Python基础(十六):文件读写,靠这一篇就够了!

意外发生:当我们再次写入新的内容的时候,发现之前写的内容不见了,这是为啥呢?这就是我们下面要讲述的文件读写的几种常见模式。

文件读写的几种常见模式(你不清楚的知识点)

Python基础(十六):文件读写,靠这一篇就够了!

关于r+、w+、a+使用说明(易错点)

Python基础(十六):文件读写,靠这一篇就够了!

r+模式:可读可写

对于这种模式,不管是读取文件中的内容,还是朝文件中写入内容。前提条件:文件存在。

# 只读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
data = f.read()
print(data)
f.close() # 朝文件中写入内容后,立即读取,会出现啥问题?
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
f.write("黑姑娘")
data = f.read()
print(data)
f.close() # 朝文件中写入内容后,调整句柄位置后,再读取,会出现啥问题?
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
f.write("黑姑娘")
f.seek(0)
data = f.read()
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

Python基础(十六):文件读写,靠这一篇就够了!

w+:可读可写

# 直接往文件中写入内容
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("bbbbbb")
f.close() # 直接读取上述文件,看看会发生啥问题?(特别注意这一步)
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
data = f.read()
print(data)
f.close() # 朝文件中写入内容后,立即读取,又会发生什么?
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("哈哈哈哈哈")
data = f.read()
print(data)
f.close() # 朝文件中写入内容后,调整句柄位置后,再读取,会发生什么?
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("嘿嘿嘿嘿嘿")
f.seek(0)
data = f.read()
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

Python基础(十六):文件读写,靠这一篇就够了!

a+:可读可写

# 直接朝文件中写入内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
f.write("哈哈")
f.close() # 直接读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
data = f.read()
print(data)
f.close() # 调整句柄位置后,再读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
f.seek(0)
data = f.read()
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

Python基础(十六):文件读写,靠这一篇就够了!

read、readline、readlines的区别

Python基础(十六):文件读写,靠这一篇就够了!

read()方法的使用说明

f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
data = f.read()
print(type(data))
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

readline()方法的使用说明

f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
data = f.readline()
print(type(data))
print(data)
f.close() f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for i in range(3):
data = f.readline()
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

去掉每一行末尾的换行符:

f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for i in range(3):
data = f.readline().strip()
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

readlines()方法的使用说明

f = open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8")
data = f.readlines()
print(type(data))
print(data)
f.close()

结果如下:

Python基础(十六):文件读写,靠这一篇就够了!

对于一个10G的大文件,怎么高效的查看文件中的内容呢?

相关说明

Python基础(十六):文件读写,靠这一篇就够了!

操作说明

f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for line in f:
print(line.strip())

部分截图如下:

Python基础(十六):文件读写,靠这一篇就够了!

Python基础(十六):文件读写,靠这一篇就够了!

with语法

# with 语法 自动关闭文件 相当于帮你执行了fp.close()

with open(r'test.txt','r',encoding='utf-8') as f:
data = f.read()
print(data)

Python基础(十六):文件读写,靠这一篇就够了!