Python文件操作详解:从基础读写到目录管理

Oliver
Oliver
发布时间:2026-10-15 | 2人浏览过
原创

本文详细解析Python中的文件操作机制,涵盖文本与二进制文件区别、open函数参数详解、缓冲区原理,以及read/readline/readlines等读取方法。同时介绍write写入、flush刷新及文件指针管理,并演示使用os模块进行重命名、删除、目录创建等系统级操作,帮助开发者掌握完整的文件处理技能。

Python文件操作概述

程序运行期间,变量、序列和对象是存储数据的便捷方式,但这些数据仅存在于内存中,程序终止后便会丢失。若需让数据在程序结束后依然保存,必须将数据持久化到文件中。

Python内置了文件对象及操作文件和目录的模块,利用这些工具可以便捷地将数据保存至文本文件等各类文件中。

文件的基本概念

一、文件的概念

在计算机系统中,文件以二进制形式存储在磁盘上。

文件主要划分为文本文件和二进制文件两类。

1、文本文件

这类文件可通过文本编辑软件查看,尽管其本质仍是二进制数据,例如Python源代码文件。

2、二进制文件

二进制文件的内容并非供人类直接阅读,而是供其他软件解析使用,如图片、音频和视频文件。此类文件无法通过文本编辑软件直接查看。

Python提供了多种文件操作方式,常见操作包括创建、删除、修改权限、读取和写入等。这些操作大致可分为两类:

删除与修改权限:针对文件本身进行,属于系统级操作。 写入与读取:针对文件内容进行操作,是文件最常用的应用级操作。

文件的基本操作步骤

二、文件的基本操作

1、操作文件的步骤

文件的应用级操作通常包含以下三个步骤,每一步均需借助相应函数实现:

打开文件:使用open()函数,该函数返回一个文件对象;

对已打开的文件执行读/写操作:读取内容可使用read()、readline()及readlines()函数;写入内容则使用write()函数。

关闭文件:完成读/写操作后,必须调用close()函数关闭文件。

open函数与打开模式详解

2、打开文件的方式

在Python中操作文件,首先需创建或打开指定文件并生成文件对象,这可通过内置的open()函数完成。

语法如下:

  • file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])
  • file:表示创建的文件对象。
  • file_name:指定要创建或打开的文件名称。
  • mode:指定文件的打开模式,默认为只读(r)模式。
  • buffering:指定读写操作时是否使用缓冲区。
  • encoding:手动设定打开文件时的编码格式,不同平台默认值不同,例如Windows默认为cp936(即GBK编码)。

打开文件的常用模式

模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
r+ 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+ 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+ 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

文件打开方式

open()是否需要缓冲区

通常建议在使用open()函数时保持缓冲区开启,即不修改buffering参数的默认值。

若buffering参数值为0(或False),表示打开文件时不使用缓冲区;若值为大于1的整数,则该整数指定缓冲区大小(单位:字节);若值为负数,则使用默认缓冲区大小。

目前计算机内存的I/O速度远高于外设(如键盘、鼠标、硬盘)的I/O速度。若不使用缓冲区,程序执行I/O操作时,内存与外设需同步读写,即内存必须等待外设输入(输出)一个字节后才能继续,导致程序大部分时间处于等待状态。

使用缓冲区时,程序执行输出操作会将数据先写入缓冲区,随后继续执行其他操作,由外设自行读取处理;执行输入操作时,先等待外设将数据读入缓冲区,无需与外设同步读写。

文件读取方法:read与readline

3、read 方法 —— 读取文件

read方法可一次性读入并返回文件的所有内容。

read() 函数的基本语法格式如下:

file.read([size])

其中,file表示已打开的文件对象;size为可选参数,指定一次最多读取的字符(字节)数,省略时默认一次性读取所有内容。

若忘记关闭文件,会导致系统资源消耗,并影响后续对文件的访问。

注意:read方法执行后,文件指针会移动到文件末尾。

示例:

# 1. 打开 - 文件名需要注意大小写 file = open("README")

# 2. 读取 text = file.read() print(text)

# 3. 关闭 file.close()

在开发中,通常先编写打开和关闭的代码,再编写中间针对文件的读/写操作。

4、按行读取文件内容

read方法默认将文件所有内容一次性读取到内存。

若文件过大,会严重占用内存。

readline方法可一次读取一行内容,包含末尾的换行符“\n”。方法执行后,文件指针移动至下一行,准备再次读取。

file.readline([size])

其中,file为打开的文件对象;size为可选参数,指定读取每一行时一次最多读取的字符(字节)数。

读取大文件的正确姿势


# 打开文件
file = open("README")
while True:
  # 读取一行内容
  text = file.readline()
  # 判断是否读到内容
  if not text:
    break
  # 每读取一行的末尾已经有了一个 `\n`
  print(text, end="")
# 关闭文件
file.close()

示例:

小文件复制


# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")

# 2. 读取并写入文件
text = file_read.read()
file_write.write(text)

# 3. 关闭文件
file_read.close()
file_write.close()

大文件复制


# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")

# 2. 读取并写入文件
while True:
  # 每次读取一行
  text = file_read.readline()

  # 判断是否读取到内容
  if not text:
    break

  file_write.write(text)

# 3. 关闭文件
file_read.close()
file_write.close()

对于按行读取文件,还有readlines()函数。

readlines()函数用于读取文件中的所有行,与调用不指定size参数的read()函数类似,但该函数返回一个字符串列表,每个元素为文件中的一行内容。

与readline()函数一样,readlines()函数在读取每一行时,会连同行尾的换行符一块读取。

文件指针的管理与影响

5、文件指针

文件指针可理解为标记,指示从哪个位置开始读取数据。

首次打开文件时,文件指针通常指向文件开始位置;执行read方法后,文件指针默认移动至读取内容的末尾。

如果执行了一次read方法读取了所有内容,再次调用read方法还能获得内容吗?

答案是不能。第一次读取后,文件指针已移动至文件末尾,再次调用不会读取到任何内容。

# 首先在 README 文件中写了8个1 # 1. 打开 - 文件名需要注意大小写 file = open("README") # 2. 读取 text = file.read() print(text) text = file.read() print("-" * 10) print(text) # 3. 关闭 file.close() #1111111 #---------- #

文件写入与缓冲区刷新

6、向文件中写入数据

Python文件对象提供了write()函数,可向文件中写入指定内容。该函数的语法格式如下:

file.write(string) 在写入文件完成后,务必调用close()函数关闭打开的文件,否则写入的内容不会保存到文件中。

这是因为,写入文件内容时,操作系统不会立即将数据写入磁盘,而是先缓存起来;只有调用close()函数时,操作系统才会确保将未写入的数据全部写入磁盘文件。

写入文件示例:

# 打开文件 f = open("README", "w")

f.write("hello python!\n") f.write("今天天气真好")

# 关闭文件 f.close()

若写入数据后不想立即关闭文件,可调用文件对象提供的flush()函数,将缓冲区数据写入文件。

f = open("a.txt", 'w') f.write("写入一行新数据") f.flush()

使用os模块进行文件目录管理

三、文件/目录的常用管理操作

在终端或文件浏览器中可执行常规的文件/目录管理操作,如创建、重命名、删除、改变路径、查看目录内容等。

在Python中,若希望通过程序实现上述功能,需导入os模块。

1、文件操作

方法名 说明 示例
rename 重命名文件 os.rename(源文件名, 目标文件名)
remove 删除文件 os.remove(文件名)

2、目录操作

方法名 说明 示例
listdir 目录列表 os.listdir(目录名)
mkdir 创建目录 os.mkdir(目录名)
rmdir 删除目录 os.rmdir(目录名)
getcwd 获取当前目录 os.getcwd()
chdir 修改工作目录 os.chdir(目标目录)

文件或者目录的操作都支持相对路径和绝对路径。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

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

Python 相关产品和应用

全部下载

专题列表