python文件读写
-
>>>f=open(file,mod) #在python2.x中还有用file来打开文件,在3.x中已经取消了这个用法了 >>>f=open("t.txt",'a',encoding="utf-8") #f 称为文件句柄,赋给f的是一个内存对象,这个文件对象包含文件名,字符集,大小,硬盘上的起始位置
-
文件模式对照:
1、r 打开只读文件,该文件必须存在。
2、r+ 打开可读写的文件,该文件必须存在。
3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失,若文件不存在则建立该文件。
4、w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
5、a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
6、a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 ?? 应该是只写
7、上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。 -
总结:r 文件必须存在,w 若文件存在清除,a 若文件存在保留追加,+都可读写,b告知函数库打开的文件为二进制文件
r+ 是读写,可以读取文件并追加,而且是追加在末尾,尽管文件指针在文件中间,最常用
w+写读,比较没用,会清除原文件,重新创建一个
-
读: str=f.read(5) #读5个字符 str=f.read() #全读 str1=f.readline() #读取一行的内容 str=f.readlines() #读取剩余的全部内容,读出来时为一个列表list #f.readlines()只适合读小文件,因为会将文件时延的内容缓存在内存中,当文件太大时,不适合 for index,line in enumerate(f.readlines()):#文件全存在内存中,效率低 if index == 2: print("------") continue print(line.strip()) for line in f: #打印的时候内存里只有一句,不会全存于内存中,即使文件大也没有关系,推荐使用,高效的循环方法
if line.startwith('a') and line[:-1].endwith('a') \n,换行符,算一个字符 print(line) #此时并不是返回列表,而是迭代器 写: f.write() #多个连在一起,不自动换行,必须加 \n print(f.tell()) #把文件句柄所在的指针打印出来,tell按字符计数 Str1=[] for line in Str: line=line.strip() Str1.append(line) #将读取的文件内容去掉换行符,重新存储在一个list中,文件读取时返回的每行为字符串类型,存在list中 - rb 网络传送(3.x中只能用二进制传送)