Python文件操作基础:读写、模式与OS模块详解

栗子
栗子
发布时间:2026-10-15| 4人浏览过
原创

本文详细讲解Python中的文件操作基础,涵盖open函数的使用、读写模式(r/w/a等)的区别,以及write、read、readlines和readline方法的具体应用。同时介绍利用os模块进行文件重命名、删除、创建文件夹及目录切换的实用技巧,并附带批量处理图片的完整代码实例,帮助开发者掌握文件I/O核心技能。

前言部分

本文旨在简明扼要地介绍Python中的文件操作机制,重点解析文件读写核心方法(包括write、read、readlines及readline)以及相关的文件管理操作,内容力求通俗易懂。

1 文件操作概述

文件的主要作用是将数据持久化存储,以便程序在后续执行时可以直接调用,无需重新生成数据,从而显著提升效率并节省时间。

1.1 文件打开与关闭

1.1.1 打开文件

在Python中,通过调用open函数即可打开已存在的文件或创建新文件。该函数的基本语法为open(文件名,访问模式)。

具体示例如下:

f = open(‘test.txt','w')

若指定的'test.txt'文件不存在,系统将自动创建该文件。

1.1.2 关闭文件

使用close()方法关闭已打开的文件句柄。

具体示例如下:

#新建一个文件,文件名为:test.txt
f = open(“text.txt”,”w”)
f.colse()#关闭这个文件

1.2 访问模式及说明

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
wb+以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。

2 文件读写操作

2.1 写数据(write)

利用write()方法可以向文件中写入数据。

具体示例如下:

#写
f = open("test.txt","w") #打开文件,w模式(写模式),文件不存在就新建
f.write("hello world,I am here!")   #将字符串写入文件中
f.close()   #关闭文件

此处展示写入的具体内容。

2.2 读数据(read)

使用read(num)方法可从文件中读取指定长度的数据,num参数表示读取的字节数。若未传入num参数,则默认读取文件的全部内容。

具体示例如下:

#读:read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f = open("test.txt","r")
content = f.read(5) #一次读五个字符
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()

运行结果如下图所示:

2.3 读数据(readlines)

与不带参数的read类似,readlines()方法以行为单位一次性读取整个文件内容,并返回一个列表,列表中每个元素对应文件的一行数据。

具体示例如下:

f = open("test.txt","r")
content = f.readlines() # 一次性读取全部文件为列表,每行一个字符串
print(content) #['hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n',

i = 1
for temp in content:
    print("%d:%s"%(i,temp))
    i += 1
f.close()

运行结果如下图所示:

2.3 读数据(readline)

readline()方法用于每次仅读取文件中的一行数据。

具体示例如下:

f = open("test.txt","r")
content = f.readline() #1:hello world,I am here!--1
print("1:%s"%content)

content = f.readline() #2:hello world,I am here!--2
print("2:%s"%content)
f.close()

运行结果如下图所示:

3 文件的相关操作

在实际开发中,常需对文件进行重命名、删除等操作。Python的os模块提供了实现这些功能的相关接口。

3.1 文件重命名

通过os模块中的rename()函数可完成文件重命名,其语法为rename(需要修改的文件名,新的文件名)。

import os
os.rename(“毕业论文.txt”,”毕业论文-最终版.txt”)

3.2 删除文件

利用os模块中的remove()函数可执行文件删除操作。

其语法为remove(待删除的文件名)。

import os 
os.remove(“毕业论文.txt”)

3.3 创建文件夹

import os
os.mkdir(“张三”)

3.4 获取当前目录

import os
os.getcwd()

3.5 改变默认目录

import os
os.chdir(“../”)

补充:文件综合操作实例

本例演示如何为文件夹下的所有图片文件名添加'_fc'后缀。

对应的Python代码如下:

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目录与文件
        lists = file_path[1].split('.') #分割出文件与文件扩展名
        file_ext = lists[-1] #取出后缀名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意这里的i是一个陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用

img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))

总结

至此,关于Python文件操作基础的介绍已完成。如需了解更多Python文件操作相关内容,建议查阅本站过往文章或继续浏览后续教程,感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。