文本文件的读写主要通过open()所构建的文件对象来实现。
基本格式
f = open(文件名,模式)
最常用的模式有:
"r" # 只读
“w” # 写入 ---->如果文件中已经有内容,会把内容抹掉,如果不存在该文件,会新建文件
“a” #追加模式 ----->在已有的文字后添加文字
“b” #二进制模式(还在其他模式中追加使用)----->一般在处理音频、图像等文件的时候使用
“+” #读/写模式(可在其他模式中追加使用) ----->r+、w+ 可读可写
f = open('test1.txt', 'w') #创建一个名为f的类文件对象,对test1.txt进行写操作 f.write("大家好,我是王尼玛") #像文件中写入字符串 f.close() f = open('test1.txt') #如果不写模式,默认为读模式 while True: line = f.readline() #一次读一行 if len(line) == 0: break print (line,end="") #不换行 f.close()
输出:
大家好,我是王尼玛
f=open("test.txt","w") f.write("0123456789") f.seek(4) #跳到第4个字节 f.write("Hello") f.close() f=open("test.txt","r") print(f.read()) #把字符串全部输出 f.seek(2) #跳回到第2个字符 print(f.read(5)) #输出接下来的5个字节 f.close()
输出:
0123Hello9 23Hel
小提示:
1.
以上所讲的仅仅是Python最基本的文件读写功能。更加丰富的文件读写功能由Python的标准库提供。
2.read() readline()以及readlines()用法
read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 .read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。
.readline() 和 .readlines() 非常相似。它们都在类似于以下的结构中使用:
fh = open('c:\\autoexec.bat') for line in fh.readlines(): print(line)
.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的for ... in ...
结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。(readlines()的输出格式[“I’ll write this message for you\n”, “hehe,that’s will be ok.\n”])
下一讲:
如果有什么疑问欢迎到我的微信公众号提问~