• 文件操作


    一、文件操作

    #打开文件: 1.路径(绝对路径、相对路径)。
    #         2.编码方式。
    #         3.操作方式(只读、只写、读写等)

    二、打开方式
      1. w 相关

    #  w   w+   w+b     写相关
    f=open('cimi.txt',mode="w",encoding='gbk')
    f.write('abcdefghigklmn')
    #只写方式就不能读
    f.close()
    
    f=open('cimi.txt',"w+",encoding='gbk')
    #写读方式,清空原先的内容,然后写入
    f.write('opq')
    #此时光标会到最后的位置,所以读不出来
    content1=f.read()
    print(content1)
    #将光标移到首位
    f.seek(0)
    content1=f.read()
    print(content1)
    f.close()
    #返回opq
    
    f=open('cimi.txt',mode="w+b")
    #凡是有b的就不需要加encoding参数了,而且后面会用到encode方法
    f.write('rst'.encode('utf-8'))
    #同样光标移到最后,需要调整光标位置才可以读
    f.seek(0)
    content2=f.read()
    print(content2)
    f.close()
    #返回b'rst'
    #弊端在于会清除原先的内容

      2. r 相关

    #  r   r+   r+b    读相关
    f=open('cimi.txt',"r",encoding='utf=8')
    #只读方式打开,光标停在首位
    content3=f.read()       #读取首位之后全部内容
    print(content3)
    #可以调整光标位置,读取部分内容
    f.seek(1)
    content3=f.read()   
    print(content3)
    f.seek(0)
    content3=f.readline()   #readline可以有参数,限制读取行数,返回的是字符串
    print(content3)
    f.seek(0)
    content3=f.readlines()  #readlines很少有参数,返回的是一个列表,列表中元素是每一行字符组成的字符串
    print(content3)
    f.close()
    #返回
    # rst
    # st
    # rst
    # ['rst']

      3. a 相关

    #  a   a+   ab      追加写
    f=open('cimi.txt',"a",encoding="gbk")
    #not readable,在后面写但是不可读,并且每次运行就在后面加写
    f.write('
    micisixili')
    f.write('
    kalajahaga')
    f.close()
    
    f=open('cimi.txt',"a+",encoding="gbk")
    #光标开始位置是最后
    f.seek(0)
    content4=f.read()
    print(content4)
    count=f.tell()
    print(count)
    f.write('
    男儿有胆气,仗剑走天涯')
    print(f.tell())
    count=f.tell()
    f.seek(count-10)
    #打开方式是gbk,一个中文两个字节,如果打开方式是utf-8,就是一个中文三个字节
    content4=f.read()
    print(content4)
    f.close()
    # 打印
    # rst
    # micisixili
    # kalajahaga
    # 123
    # 147
    # 仗剑走天涯
    
    f=open('cimi.txt',mode="a+b")
    f.write('cccc'.encode('gbk'))
    print('----')
    count=f.tell()
    f.seek(count-50)
    content5=f.read()
    print(content5)
    f.seek(count-50)
    listc=f.readlines()
    print(listc)
    f.close
    # ----
    # b'micisixili
    kalajahaga
    xc4xd0xb6xf9xd3xd0xb5xa8xc6xf8xa3xacxd5xccxbdxa3xd7xdfxccxecxd1xc4cccc'
    # [b'micisixili
    ', b'kalajahaga
    ', b'xc4xd0xb6xf9xd3xd0xb5xa8xc6xf8xa3xacxd5xccxbdxa3xd7xdfxccxecxd1xc4cccc']

      4.示例

    f=open('cimi.txt',"r+",encoding='gbk')
    f.write('qm')
    #是从光标位置开始,向后覆盖
    content6=f.read()
    print(content6)
    f.seek(0)
    for i in f:
        print(i,end='')
    print('-----')
    f.seek(0)
    f.truncate(10)
    content6=f.read()
    print(content6)
    f.close()
    # 打印
    # t
    # micis
    # micisixili
    # kalajahaga
    # 男儿有胆气,仗剑走天涯cccc
    # qmt
    # micis
    # micisixili
    # kalajahaga
    # 男儿有胆气,仗剑走天涯cccc-----
    # qmt
    # micis
    #方法
    # f.write('内容')
    # f.seek(参数)     按照字节定光标
    # f.tell()        获取当前文件指针的位置
    # f.read(参数)     可以限制读的内容
    # f.readline()    读一行,可以把光标调到第二行
    # f.readlines()   形成列表,每一行的字符串作为一个元素
    # f.truncate()    有返回值,参数可写,对源文件进行截取,其他的内容删掉可以配合seek使用

    三、高级方式

    with open('cimi.txt',"r+",encoding='gbk') as f:
    #读写方式,必须是已经存在的文件
        f.write('cv')
        print(f.read())
    #不需要关闭,自动关闭
    
    #两个文件一起操作
    with open('cimi.txt',"a+",encoding='gbk') as f1,
        open('test.txt',"r+",encoding='gbk') as f2:
        contentc=f2.read()
        print(contentc)
        print('------')
        f1.seek(0)
        contentz=f1.read()
        print(contentz)
    # 
    # ll
    # micis
    # cill
    # ------
    # cvll
    # micis
    #文件操作注释
    #文件操作中,最好不要又度又写,文件指针会乱。一定要注意。最好只r,w,a。
    #编码方式最好是utf-8,标准规范的统一编码方式。
    #readline不常用。视频文件基本都是一行一行,但是不可以一行一行读。应该先变成bytes,再按照字节读。
    #readlines。
    #for 循环就是最好的方法。
    
    #with open 通过操作系统对文件进行修改。open函数里的参数,默认mode为r, encoding为unicode
    #所有windows文件都是gbk编码
    
    f=open('cici.txt',"w")
    f.write("mo
    saf
    fds")
    f.close()
    
    #修改文件
    with open('cici.txt',encoding='utf-8')as f,open('cici.bak',encoding='utf-8')as f2: 
        for line in f :
            if 'saf' in line:
                line=line.replace('saf','salary')
            f2.write(line)
            #无论修改与否,都会在拷贝文件中写入Line的内容
    #删除文件
    import os
    os.remove('cici.txt')
    os.rename('cici.bak','cici.txt')
        #就是删除源文件之后,修改现在文件的名字

      

  • 相关阅读:
    hibernate笔记--实体类映射文件"*.hbm.xml"详解
    struts2学习笔记--使用struts2插件实现ajax处理(返回json数据)
    struts2学习笔记--使用servletAPI实现ajax的一个小Demo
    Struts2学习笔记--使用Response下载文件和Struts2的StreamResult文件下载
    struts2学习笔记--上传单个和批量文件示例
    struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
    struts2学习笔记--使用Validator校验数据
    struts2学习笔记--OGNL表达式1
    easyui dialog 扩展load
    easyui filter 过滤时间段
  • 原文地址:https://www.cnblogs.com/lowislucifer/p/10957610.html
Copyright © 2020-2023  润新知