Python文件操作详解:读写、编码与管理

小石头
小石头
发布时间:2026-10-12 | 2人浏览过
原创

本文系统讲解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文件操作的核心方法,希望有所帮助。感谢对本站的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表