Python文件指定行读写操作详解与模式解析
本文详细解析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文件指定行读写操作的详解内容分享完毕,希望能为读者提供参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









