Python文件操作基础:读写、模式与OS模块详解
本文详细讲解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文件操作相关内容,建议查阅本站过往文章或继续浏览后续教程,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









