zoukankan      html  css  js  c++  java
  • Python文件操作总结

    一、文件操作的常用方法:

    1、read():从光标位置开始读取整个文件剩下的内容,注意是从光标位置开始,不一定是读取整个文件。

    #第一次读取:
    f=open('test.txt','r')
    print(f.read())
    f.close()                  
    #自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
     作者:仓央嘉措
    
    #第二次读取
    f=open('test.txt','r')
    f.readline()
    print(f.read())        #作者:仓央嘉措
    f.close()

    2、readline和readlines的区别:

    #readline()只读取一行,然后光标移动到下一行
    f=open('test.txt','r')
    print(f.readline())       #自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
    print(f.readline())     #作者:仓央嘉措
    f.close()
    
    #readllines()读取整个文件,然后把每一行当成一个元素存成一个列表。注意每个元素后后带有换号符
    f=open('test.txt','r')
    print(f.readlines())   #['自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
    ', '作者:仓央嘉措
    ']
    f.close()
    
    #最后说明一点:readlines是把真个文件都一次性读写到内存中,如果文件小还好,一旦文件大了,会要命。文件大可以使用下面这种方法来读写:
    with open('test.txt','r') as f:
        for line in f:
            print(line.strip())
    
    #这样读写的好处就是一行一行读,并且读完就释放,完全不占用内存。

     3、write,writelines

    f.write('1111
    222
    ') #针对文本模式的写,需要自己写换行符
    f.write('1111
    222
    '.encode('utf-8')) #针对b模式的写,需要自己写换行符
    f.writelines(['333
    ','444
    ']) #文件模式
    f.writelines([bytes('333
    ',encoding='utf-8'),'444
    '.encode('utf-8')]) #b模式

     4、其他方法:

    f.readable() #文件是否可读
    f.writable() #文件是否可读
    f.closed #文件是否关闭
    f.encoding #如果文件打开模式为b,则没有该属性
    f.flush() #立刻将文件内容从内存刷到硬盘
    f.name   #文件名

     二、文件光标的移动:

    1、read(n)当文件打开方式为文本模式时,代表读取n个字符,文件打开方式为b模式时,代表读取n个字节

    #1、以文本模式读取
    with open('test.txt','r') as f:
        print(f.read(4))   #自恐多情
    
    #2、以字节模式读取:
    with open('test.txt','rb') as f:
        print(f.read(4).decode('gbk'))         #自恐
    #直接输出:print(f.read()) 输出为  b'xd7xd4xbfxd6'

    2、tell()  获取当前文件指针所在的位置,没参数。以字节方式计算返回

    with open('test.txt','r') as f:
        print(f.read(4)) #自恐多情
        print(f.tell())   #8

    3、seek() 作用:用于移动文件读写指针到指定位置。

    #函数的原型是:file.seek(offset,whence=0)
    offset是指偏移量,whence有三个值,0,1,2。0代表移动到文件开头,1,指当前位置,2指文件末尾。 缺省则使用默认值0. 
    #注意:使用参数1,2必须在字节模式b下打开文件!
    
    with open('test.txt','r') as f:
        print(f.read(4)) #自恐多情
        print(f.tell())   #8
        f.seek(0,0)      #返回开头
        print(f.read(4))      #自恐多情
    
    
    
    with open('test.txt','rb') as f:
        print(f.read(4).decode('gbk')) #自恐
        f.seek(-4,1)
        print(f.read(4).decode('gbk'))  # 自恐
    
    
    with open('test.txt','rb') as f:
        f.seek(-4,2)
        print(f.read(4).decode('gbk'))   #嘉措

    二、文件的修改:

      实际上我们平时说得修好某个文件的某个地方,实际是本质上并不是直接修改文件,而是覆盖。文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,我们可以用下面的代码来模拟这过程。

    import  os
    with open('test.txt','r') as f ,open('test_1.txt','w') as f1:
        for line in f:
            line=line.replace('自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.',
                              '不恐多情损梵行, 唯恐入山误倾城.世间安得双全法,宁负如来不负卿.')
            line=line.replace('仓央嘉措','哟,写bug呢??')
            f1.write(line)
    
    os.remove('test.txt')
    os.rename('test_1.txt','test.txt')
  • 相关阅读:
    redis(二)高级用法
    redis(一) 安装以及基本数据类型操作
    RabbitMQ(五) -- topics
    JS实时数据运算
    Access数据库中Sum函数返回空值(Null)时如何设置为0
    asp检测数字类型函数
    MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
    WIN8系统安装软件时提示"扩展属性不一致"的解决方法
    免费的网络扫描器-Advanced IP Scanner
    中国电信大亚DP607光猫破解,设置路由,wifi!关闭远程管理,改连接限制,SN码查询!
  • 原文地址:https://www.cnblogs.com/linshuhui/p/8985214.html
Copyright © 2011-2022 走看看