Python文件操作详解:读写、编码与管理
本文系统讲解Python文件操作的核心流程,涵盖open函数、read/write/close方法的使用,以及文本与二进制文件的区别。重点解析文件指针机制、按行读取大文件技巧,并介绍os模块进行目录管理。同时补充eval函数的应用及编码声明注意事项,帮助开发者掌握安全的文件处理最佳实践。
学习目标:
- 理解文件的基本概念
- 掌握文件的基础读写操作
- 熟悉文件与文件夹的常用管理命令
- 了解文本文件的编码规范
1. 文件的基本概念
1.1 文件的作用与定义
在计算机系统中,文件是指存储在长期存储介质上的一段数据集合。
常见的长期存储设备包括硬盘、U盘、移动硬盘以及光盘等。
文件的主要价值在于:
实现数据的持久化存储,以便在后续需要时进行调用和使用。

1.2 文件的存储格式
- 无论何种类型的文件,在磁盘上均以二进制形式进行存储。
根据内容的可读性,文件主要分为文本文件和二进制文件两类。
- 文本文件
- 文本文件可以通过普通的文本编辑器直接查看内容。
- 尽管肉眼可读,但其底层存储本质依然是二进制数据。
- 典型的例子是Python源代码文件。
- 二进制文件
- 这类文件保存的内容并非供人类直接阅读,而是供其他软件解析执行。
- 常见的图片、音频和视频文件也属于此类。
- 二进制文件无法通过常规文本编辑器直接查看其原始内容。
2. 文件的基础操作
2.1 操作文件的标准流程
在计算机中操作文件遵循固定的三步流程:
- 第一步:打开文件。
- 读、写文件
- 第二步:读操作,即将文件内容加载到内存中。
- 第三步:写操作,即将内存中的数据写入到文件。
- 第四步:关闭文件,释放资源。
2.2 操作文件的关键函数与方法
- 在Python中,操作文件需掌握1个核心函数和3个常用方法。
| 序号 | 函数/方法 | 说明 |
|---|---|---|
| 1 | open | 打开文件,并返回文件操作对象 |
| 2 | read | 将文件内容读取到内存 |
| 3 | write | 将指定内容写入到文件 |
| 4 | close | 关闭文件 |
- 使用open()函数打开文件,该函数返回一个文件对象。
- read、write和close这三个方法必须通过获取的文件对象来调用。
2.3 read方法:读取文件内容
- open函数的第一个参数为被打开的文件名,且文件名区分大小写。
- 若指定文件存在,open函数将返回有效的文件操作对象。
- 若指定文件不存在,程序将抛出异常错误。
- read方法能够一次性读取并返回文件的全部内容。
- close方法用于关闭已打开的文件。
- 若忘记调用close关闭文件,会导致系统资源占用,并可能影响后续对文件的访问。
- 需注意:执行read方法后,文件指针会自动移动到文件的末尾位置。
- 提示:
- 开发建议:通常先编写打开和关闭文件的代码,再编写中间的读写逻辑。
#获得文件操作对象(sis.txt文件)
file = open("sis.txt")
#读取
text = file.read()
print(text)
#关闭文件
file.close()
'''
运行结果
我是中文的哦
nidie中文
'''
- 关于文件指针的概念
- 文件指针用于标记当前开始读取数据的位置。
- 首次打开文件时,文件指针通常指向文件的起始位置。
- 执行read方法后,文件指针会移动至读取内容的末尾位置。
- 执行读取操作后,指针默认会移动至文件末尾。
- 思考:若执行一次read方法读取了所有内容,再次调用read方法是否还能获取内容?
- 结论:不能再次读取。因为第一次读取后指针已移至末尾,再次调用read方法将无法获取任何内容。
文件指针运行示意图
#获得文件操作对象(sis.txt文件)
file = open("sis.txt")
#读取
text = file.read()
#查看读取文件的长度 (14)
print(len(text))
#输出读取到的文件
print(text)
print("*"*30)
#重新读取文件
text = file.read()
print(text) # 空
print(len(text)) # (0)
#关闭文件
file.close()
"""
运行结果:
14
我是中文的哦
nidie中文
******************************
0
"""
2.4 打开文件的模式设置
- open函数默认以只读模式打开文件,并返回对应的文件对象。
具体语法格式如下:
f = open( " 文件名 " , " 访问方式 " )

提示:频繁移动文件指针会影响读写效率,实际开发中更常使用只读或只写模式操作文件。
2.5 按行读取文件内容
- read方法默认会将文件所有内容一次性加载至内存。
- 若文件体积过大,将对内存造成严重占用压力。
使用readline方法:
- 该方法每次仅读取文件中的一行内容。
- 执行该方法后,指针会自动移动到下一行,为下一次读取做准备。
处理大文件的推荐做法:
#打开文件
file = open("sis.txt")
while True:
#读取一行内容
text = file.readline()
#判断是否读取到内容
if text == "": #或者 if not text:
print(type(text)) #<class 'str'>
break
#每读取到末尾都会有一个 \n
print(text,end="")
"""
运行结果:
python1一
python2二
python3三
python4四<class 'str'>
"""
2.6 文件读写实例:文件复制
目标:通过代码实现文件的完整复制过程。
小文件复制方案
打开源文件,读取完整内容,并将其写入到目标文件中。
#复制小文件方式1
file_read = open("sis.txt","r")
file_write = open("test.txt","w")
text_1 = file_read.read()
text_2 = file_write.write(text_1)
file_write.close()
file_read.close()
#复制小文件方式2 推荐(with关键字,会自动释放文件对象空间)
test = None
with open("sis.txt","r") as file:
test = file.read()
with open("test1.txt","w") as file:
file.write(test)
大文件复制方案
打开源文件,逐行读取内容,并按顺序写入到目标文件中。
#大文件复制
file_read = open("五笔词根1.jpg","rb")
file_write = open("五笔词根2.jpg","wb")
while True:
text = file_read.readline()
#python中,除了‘'、""、0、()、[]、{}、None为False, 其他转换都为True。 也就是说字符串如果不为空,则永远转换为True。
if not text:
break
file_write.write(text)
file_read.close()
file_write.close()
2.7 文件读写相关函数参考
文件读取详细文档参考:Python 3.10.1 官方文档
3. 文件与目录的常用管理操作
- 在终端或文件浏览器中,可执行常规的文件/目录管理操作,例如:
创建、重命名、删除、更改路径、查看目录内容等。
- 在Python中,若希望通过程序实现上述功能,需导入os模块。
文件相关操作接口:

目录相关操作接口:

提示:文件及目录操作均支持相对路径和绝对路劲两种路径形式。
4. 文本文件的编码方式
(此处无额外说明)
# -*- coding: utf8 -*-
# -*- coding: utf-8 -*-
# -*- coding: gbk -*-
5. 拓展知识:eval函数
eval函数功能强大,可将字符串视为有效的Python表达式进行求值,并返回计算结果。
# -*- coding: gbk -*-
#基本的数学计算
print(eval("1+1"))
#字符串重复
print(eval("'*'*30"))
#将字符串转变成列表
print(type(eval("[1,2,3,4,5]")))
#将字符串转变成元组
print(type(eval("(1,2,3,4,5)")))
#将字符串转变成字典
print(type(eval("{'name':'苹果','age':18}")))
应用案例:简易计算器
input_str = input("输入算数题")
print(eval(input_str))
'''
运行:
输入算数题1+1
2
'''
注意:在开发过程中,严禁直接使用eval处理input的输入结果,以防安全风险。

以上介绍了Python文件操作的核心方法,希望有所帮助。感谢对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













