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中只能用二进制传送)
posted @ 2017-07-30 21:16  是坑坑啊  阅读(778)  评论(0编辑  收藏  举报