Python文件指定行读写操作详解与模式解析

阿麦
阿麦
发布时间:2026-10-14 | 3人浏览过
原创

本文详细解析Python中文件指定行的读写操作。首先介绍open函数的多种打开模式(如w, r+, rb等)及文件对象常用方法(read, write, seek, truncate等)。随后通过三种具体代码示例,演示如何读取、修改并写回指定行内容,包括列表插入、字符串拼接及文件写入的完整流程,帮助开发者掌握灵活的文件处理技巧。

Python文件创建与打开模式

使用os.mknod("test.txt")可以创建一个空文件。

使用fp = open("test.txt", "w")可以直接打开一个文件,若文件不存在则自动创建。

关于open函数的打开模式说明如下:

具体模式详情:

w:以写入方式打开文件。

a:以追加模式打开,从文件末尾开始写入,必要时创建新文件。

r+:以读写模式打开文件。

w+:以读写模式打开文件(行为同w)。

a+:以读写模式打开文件(行为同a)。

rb:以二进制读模式打开文件。

wb:以二进制写模式打开文件(行为同w)。

ab:以二进制追加模式打开文件(行为同a)。

rb+:以二进制读写模式打开文件(行为同r+)。

wb+:以二进制读写模式打开文件(行为同w+)。

ab+:以二进制读写模式打开文件(行为同a+)。

文件对象常用方法详解

fp.read([size]):读取文件内容,size指定读取长度,单位为字节。

fp.readline([size]):读取文件的一行,若定义size,可能仅返回该行的一部分。

fp.readlines([size]):将文件每一行作为列表的一个元素返回该列表。内部通过循环调用readline()实现。若提供size参数,表示读取内容的总长度,可能只读取文件的一部分。

fp.write(str):将字符串str写入文件,write()方法不会在str后自动添加换行符。

fp.writelines(seq):将序列seq的内容全部写入文件(多行一次性写入)。该方法忠实地写入内容,不会在每行后自动添加任何东西。

fp.close():关闭文件。虽然Python会在文件不再使用时自动关闭,但该功能未得到保证,建议养成手动关闭的习惯。若在文件关闭后仍对其进行操作,将引发ValueError异常。

fp.flush():将缓冲区内容强制写入硬盘。

fp.fileno():返回一个长整型的“文件标签”。

fp.isatty():判断文件是否是一个终端设备文件(主要针对Unix系统)。

fp.tell():返回当前文件操作标记的位置,以文件开头为原点计算。

fp.next():返回下一行,并将文件操作标记位移到下一行。在使用for ... in file语句遍历文件时,底层即调用next()函数实现。

fp.seek(offset[,whence]):将文件操作标记移动到offset位置。offset通常相对于文件开头计算,一般为正数。若提供whence参数,则计算基准不同:0表示从头开始计算,1表示以当前位置为原点,2表示以文件末尾为原点。需注意,若文件以a或a+模式打开,每次执行写操作时,文件操作标记会自动返回到文件末尾。

fp.truncate([size]):将文件裁剪至规定大小,默认裁剪到当前文件操作标记的位置。若size大于文件当前大小,根据系统不同,可能不改变文件、用0填充至指定大小或添加随机内容。

文件读写基础代码示例


#coding: utf-8

#打开文件open(),默认只读"r".
#exp1:相对路径
f = open(".\\test001.txt") 
data = f.read()
print(data)

#exp2:绝对路径
f = open("test001.txt","r")
data = f.read()
print(data)

#exp3:绝对路径
f = open("D:\\mytest\\test001.txt")
data = f.read()
print(data)


#打开并关闭文件:
f = open("test001.txt","r")
data = f.read()
print(data)
f.close()


#写文件write()不换行:
f = open("test001.txt","w")
f.write("ddddddddddddd"+"\n")
f.close()

第一种读写指定行的方式:

指定行读取与写入示例


#写文件writelines()换行:
with open("test001.txt","w") as z:
 z.write("33333333"+"\n")
 z.write("cccccccccc"+"\n")



#读取指定行:
with open("test001.txt",'r') as x:
 line = x.readlines()
 first_line = line[0]
 second_line = line[1]
 print(first_line)
 print(second_line)

第二种读写指定行的方式:

列表方式处理指定行(反复追加)


#coding: utf-8


#将文件读进列表(反复追加)中:
lines = []
with open("test001.txt","r") as y:
 for line in y:
  lines.append(line)
 y.close()

#在列表中插入文本数据:
lines.insert(0, "aaaa\n")
lines.insert(1, "bbbb\n")
print(lines)

#利用分隔符连接:
s = ''.join(lines)
print(s)

#写到文件中去:
with open("test001.txt","w") as z:
 z.write(s)
 z.close()

#再次读取文件中的数据:
with open("test001.txt","r") as x:
 data = x.read()
 print(data)
 x.close()
#清空列表:
del lines[:]
print(lines)

第三种读写指定行的方式:

列表方式处理指定行(单次写入)


#coding: utf-8


#在列表中插入文本数据:
lines = []
a = "abc123"
b = "edf456"
lines.insert(0, a)
lines.insert(1, b)
print(lines)

#利用分隔符连接:
s = '\n'.join(lines)

#写到文件中去:
with open("test001.txt","w") as z:
 z.write(s)
 z.close()

#再次读取文件中的数据:
with open("test001.txt","r") as x:
 data = x.read()
 print(data)
 x.close()

#清空列表:
# del lines[:]
# print(lines)

第三种方式的小改进版:

指定行写入的简化实现


#在列表中插入文本数据:
lines = []
lines.insert(0, "aaaa\n")
lines.insert(1, "bbbb\n")
print(lines)

#利用分隔符连接:
s = ''.join(lines)

#写到文件中去:
with open("test001.txt","w") as z:
 z.write(s)
 z.close()

#再次读取文件中的数据:
with open("test001.txt","r") as x:
 data = x.read()
 print(data)
 x.close()

#清空列表:
# del lines[:]
# print(lines)

备注:第一种方式较为生硬,不推荐使用。第二种方式支持反复追加内容,第三种方式仅追加一次,不会造成重复写入。

以上关于Python文件指定行读写操作的详解内容分享完毕,希望能为读者提供参考,并欢迎大家继续支持本站。

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表