Python文本文件处理:从创建、读写到路径管理的完整指南

凌晨两点半
凌晨两点半
发布时间:2026-10-14| 6人浏览过
原创

本文详细解析Python中文本文件的创建、读写及路径管理操作。涵盖open函数的多种模式(r/w/a等)、write与read方法的使用细节、多行读写技巧、文件指针定位(seek/tell)以及基于os模块的路径判断与文件夹创建。同时包含文件异常处理的规范写法,帮助开发者掌握稳健的文件处理流程。

文本文件具备初步存放、编辑各类数据的能力,并可以持久保留和数据共享。

1. 建立文件

创建文本文件主要有两种途径:第一种是利用Windows系统自带的“记事本”工具,创建一个扩展名为“.txt”的文件,随后供程序调用;第二种则是通过编写程序代码来自动建立新文件。

1.1 文本文件代码实现


newfile = "g:\\t1.txt"   #定义需要建立的文本名称和路径
b_new_file = open(newfile,"w")     #用open函数建立一个新的文本文件
b_new_file.close()     #关闭文件
print("%s成功建立!"%newfile)

效果:

1.2 代码编写分析

文本文件的名称

(1)文本名称的命名需符合内容主题,通常建议采用由英文字母、数字或汉字组成的易于阅读的字符串组合。严禁使用星号(*)等特殊符号作为命名的开头。

(2)文本名称本质上是一个字符串,在命名过程中必须考虑转义符号对路径或名称的影响。例如:“g:\t1.txt”中的“\t”本身代表横向制表符,若直接使用“g:\t1.txt”会导致路径解析错误。另一种解决字符串转义符的方法是,在字符串前添加原始字符串限制符号(原生字符r或R),例如使用r“g:\t1.txt”即可原样输出该路径。

(3)指定路径的设置在不同解释器中可能存在差异,因此必须明确设置路径。

用open函数建立(打开)文件

open函数属于系统内置函数,支持对字符串或二进制文件的打开操作,并返回一个可操作的文件对象。

使用格式:

open(file,mode=“w”)

file参数用于指定需要操作的文件名(可同时包含文件路径);mode参数用于指定操作方式。

r、w、x、a为打开文件的基本模式,分别对应只读、只写、新建和追加四种打开方式;b、t、+、U与基本模式组合使用,分别对应二进制、文本、读写以及通用换行符四种模式。

mode默认值为“rt”模式,意味着对文本文件进行读操作。目前,mode值常见的组合方式包括“rb”、“wb”、“xb”、“ab”、“rt”、“wt”、“xt”、“at”、“r+”、“w+”、“x+”、“a+”。

用b_new_file.close()方法把新建立的文件关闭

如果不关闭新建立的文本文件,则打开的文件对象将一直驻留在内存中。如果打开的文件数量过多,容易出现内存溢出等错误。

2. 基本的读写文件

打开文本文件后,可以对文件进行基本的读写操作。

2.1 用文件对象write(s)方法写内容

f.write(s),其中f代表以可写方式打开的文件对象;s为将要写入文件的内容。write()方法将s内容写入文件f后,返回写入的字节数。


newfile = "g:\\t1.txt"   #定义需要建立的文本名称和路径
b_new_file = open(newfile,"w")     #用open函数建立一个新的文本文件
t_n = b_new_file.write("l like python!")   #用文件对象write()方法写字符串
b_new_file.close()     #关闭文件
print("往文件里写入%d字节内容"%t_n)

效果:

以“w”模式打开的文本文件,在写入内容时,第二次写入的内容会覆盖第一次保存的内容。若要解决此问题,应采用“a”模式打开文件进行追加写入。

2.2 用文件对象read()方法读取内容

f.read(size),其中f代表以可读方式打开的文件对象;size为可选参数。若指定读取字节数,则读取指定大小的内容;若没有指定,则读取尽可能大的内容。


b_new_file = open(newfile,"r")      #以只读方式打开文件
tt = b_new_file.read()           #用文件对象read()方法读取内容
print(tt)
b_new_file.close()

效果:

2.3 连续用read()方法、write()方法操作文件


b_new_file = open(newfile,"r+")     #用open函数建立一个新的文本文件
tt = b_new_file.read()           #用文件对象read()方法读取内容
print(tt)
t_n = b_new_file.write("\n三酷猫!^_^")     #继续往文件里写入新内容
b_new_file.close()
print("往文件里写入%d字节内容"%t_n)

效果:

注意:不鼓励连续读写操作方法,因为存在读写数据不确定性问题。

3. 复杂的读写文件

在基础的读写存在上,可以考虑多行读写的操作。

1、一次写入多行


nums = ["one","two","three","four","five","six","seven"]
t = open(r"g:\t2.txt","a")    #追加打开文件
for get_one in nums:
    t.write(get_one+"\n")     #将每个元素循环写入文件,行末加\n
t.close()
print("连续写入完成")

效果:

2、一次读一行

f.readline(s),其中f代表以可读模式打开的文件;s为可选参数。若设置指定大小的字节,则返回相应大小的字符串;若没有设定,则以行单位返回字符串。


t1 = open(r"g:/t2.txt","r")
dd = 1
while dd:
    dd = t1.readline()    #一次读一行
    print(dd.strip())      #strip()去除字符串两端的空字符

效果:

3、以列表格式读取多行


t1 = open(r"g:/t2.txt","r")
t_s = t1.readlines()            #以列表格式读取多行
print(t_s)

效果:

4、连续读特定字节数量的内容


f = open(r"g:/t2.txt","r")
print(f.readline(2))         #读取文件头2个字节
print(f.readline())          #继续读取同一行,剩余字节
print(f.read(4))             #继续读取4个字节
print(f.read(4))

效果:

5、在指定位置读内容

5.1 f.tell(),f代表打开的文件,tell()方法返回当前文件可以写入或读写的当前位置(字节数)。


f = open(r"g:/t2.txt","r")
print(f.readline(2))         #读取文件头2个字节
print(f.readline())          #继续读取同一行,剩余字节
print(f.read(4))             #继续读取4个字节
print(f.read(4))
print(f.tell())    #获取执行上述操作后的当前位置
print(f.read(1))
print(f.tell())

效果:

5.2 f.seek(offset[,whence])

f代表以打开的文件,seek()方法用于重新指定将要读写的当前位置。offset参数设置位置的偏移量的字节数,whence参数可选,用于确定文件起计位置。默认值为SEEK_SET(或0),代表从文件开始位置+偏移量来确定当前位置;SEEK_SET(或1),代表当前位置起计;SEEK_END(或2),代表从文件的结尾起计。


print(f.seek(17))
print(f.read(4))

效果:

在指定位置写内容


f3 = open(r"g:/t2.txt","w")
print(f3.seek(17))
f3.write('---')
f3.close()

效果:

4. 文件异常处理


f_n = r"g:\t3.txt"
flag = False
try:                    #异常捕捉开始
    f = open(f_n,"r")   #打开t3.txt文件
    print(f.read())
    flag=True
except:                 #捕捉异常
    print("打开%s文件出错,请检查!"%f_n)      #出错提示
finally:                #是否出错,都强制执行下列代码
    if flag:            #如果文件打开顺利
        f.close()       #则关闭文件
        print("文件做关闭处理!")
    else:               #文件打开出现异常
        print("程序关闭")

效果:

5. 文件与路径

5.1 与路径相关的操作 获取程序运行的当前路径

os.path.abspath§,abspath()以字符串形式返回平台归一化的绝对路径,p为指定的路径名称(字符型)。若p为指定”(.)“,则代表当前路径。


import os
print(os.path.abspath(os.path.curdir))   #返回当前绝对路径

效果:

判断指定路径下是否存在文件


import os
print(os.path.exists(r"g:\\t1.txt"))        #用exists()方法判断文件是否已经存在

效果:

exists§方法判断指定路径下的文件是否存在。若存在,则返回True;若不存在,则返回False。p为指定的路径的文件字符串,也可以通过isfile()方法直接判断。

判断指定路径是否存在

isdir§方法判断指定路径是否存在,p为字符串格式的路径。存在返回True,不存在则返回False。


import os
print(os.path.isdir(r"g:\\"))       #用isdir()方法判断路径是否存在

效果:

exists§方法也可以用来直接判断路径


import os
print(os.path.exists(r"g:\\"))        #用exists()方法直接判断路径

效果:

建立文件夹(子路径)

利用os模块的makedirs§方法可以建立对应的文件夹,p为字符串形式的需要建立的路径。建立不成功,抛出OSError出错信息;建立成功,则在对应的路径下将发现新建立的文件夹。


import os
print(os.makedirs(r"g:\\files"))      #在g盘建立files文件夹

效果:


5.2 动态指定路径下建立新文件


import os
import sys

get_cur_path = os.path.abspath(os.path.curdir)
f_n = get_cur_path+"\\files"   #在当前路径建立子路径files
try:
    if not os.path.isdir(f_n):   #确认路径是否存在
        os.makedirs(f_n)         #不存在,建立子路径
except:                          #建立子路径过程发生异常
    print("子文件夹%s建立出错!"%f_n)   #提示建立出错
    sys.exit()                      #退出程序

f_n = f_n+"\\t3.txt"
flag = False
try:
    f =open(f_n,"w")
    print(f.write("ok"))
    flag=True
    print("文件%s写入正常!"%f_n)
except:
    print("打开%s文件出错,请检查!"%f_n)
finally:
    if flag:
        f.close()
        print("文件做关闭处理!")
    else:
        print("程序关闭")

效果:

总结

到此这篇关于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 算法库。