• python_09 文件处理流程,文件操作方法


    文件处理流程

    1.打开文件,得到文件句柄并赋值给一个变量

    2.通过句柄对文件进行操作

    3.关闭文件

    f=open('test.txt',encoding='gbk')
    data = f.read()
    print(data)
    f.close()

    w+每次打开文件,都会清空之前的内容,若文件不存在,则会自动创建

    r+会在之前的基础上追加内容,但是不会创建文件

    所以两个可以一起用,用之前判断一下文件是否存在,如下

    读取文件:

    #r代表只读 w代表只写 a代表只追加
    #默认打开文件是只读模式
    f=open('test.txt','r',encoding='gbk')
    data = f.read()
    print(data)
    f.close()
    print(f.readable())#返回bool文件是否可读
    print('第一行',f.readline(),end='')#读每一行
    print('第二行',f.readline())
    print('第三行',f.readline())
    print(f.readlines())


    写文件:

    文件内容只能是字符串模式

    f=open('zzz','w',encoding='utf-8')
    f.write('111111111111
    ')
    f.write('2222222222222222
    ')
    f.writelines(['333
    ','444
    '])
    f.close()


    追加:

    f=open('zzz','a',encoding='utf-8')
    f.write('写到文件最后')
    
    
    f.close()

    写文件都是从光标处开始写,若不读文件,则光标在第一行顶头
    数据本质上都是覆盖,没有改写

    #修改文件第一行
    f=open('a.txt','r')
    data=f.readlines()
    print(data)
    f.close()
    
    d=open('a.txt','w')
    d.write(data[0])
    d.close()

    with关键字:

    with open('a.txt','w') as a:
        a.write('1111
    2222')

    相当于打开文件对文件进行操作后关闭文件

    with open('a.txt','r') as a,
        open('xxx','w') as b:
        data=a.read()
        b.write(data)

    以字节方式操作文件

    Windows平台中, 为回车

    Linux平台中, 为回车

    #'字符串'---------encode编码--------->>>bytes
    #bytes---------decode解码--------->>>'字符串'

    二进制方式读:

    # f=open('a.txt','rb',encoding='utf-8')#b的方式不能执行编码
    f=open('a.txt','rb')
    data=f.read()
    print(data)
    #'字符串'---------encode--------->>>bytes
    #bytes---------decode--------->>>'字符串'
    print(data.decode())
    f.close()

    二进制方式写:

    f=open('zzz','wb')
    #f.write('1111
    ')#报错
    x='1111
    '
    y=bytes(x,encoding='utf-8')
    f.write(y)
    z=x.encode('utf-8')
    f.write(z)
    f.close()

    open()默认参数:

     Character Meaning
        --------- ---------------------------------------------------------------
        'r'       open for reading (default)
        'w'       open for writing, truncating the file first
        'x'       create a new file and open it for writing
        'a'       open for writing, appending to the end of the file if it exists
        'b'       binary mode
        't'       text mode (default)
        '+'       open a disk file for updating (reading and writing)
        'U'       universal newline mode (deprecated)


     文件操作的其他方法:

    f.closed返回bool值表示文件是否关闭

     f.encoding查看使用open打开文件时的编码

    f.flush()刷新,将内存中数据保存到硬盘

    注意:read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位如:seek,tell,truncate

    f.tell()返回光标当前位置

    f=open('a.txt','r',encoding='utf-8',newline='')#newline=''读取文件中真正的换行符号

    f.seek()控制光标的移动,seek(a,b)第一个参数表示相对上一次移动的字节,第二个参数为0表示从文件开头开始计算,为1从上一次光标停的位置计算,为2从末尾开始计算,且此时第一个参数需加-号,第二个参数是1,2时需指定文件以b的方式打开

    #读取文件最后一行,下面的第一种方法会加大内存,拖慢速度,相当于把整个文件都读取并缓存到内存中
    f=open('a.txt','r+',encoding='utf-8')
    data=f.readlines()
    print(data[-1])
    
    >>>2019/3/27   她做了sb一件事情
    
    
    ####################
    f=open('a.txt','rb')
    for i in f:
        offs=-10
        while True:
            f.seek(offs,2)
            data=f.readlines()
            if len(data)>1:
                print('文件的最后一行是:%s'%data[-1].decode('utf-8'))
                break
            offs*=2
    
    >>>文件的最后一行是:2019/3/27   她做了sb一件事情


    f.truncate(10)从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写的方式打开,w和w+除外

    #循环文件的推荐方式:
    f=open('')
    for i in f:
        ......
     
  • 相关阅读:
    Ubuntu下一个openldapserver部署步骤
    秀球技:倒和其他无用
    POJ1201-Intervals(差动限制)
    Scrapy研究和探索(七)——如何防止被ban大集合策略
    word 一些有用的技巧
    Java设计模式偷跑系列(十二)组合模式建模和实现
    Sql使用视图(简单的视图)适合入门-level
    cocos2d 缓存池 对象的再利用
    txt 开关 csv 可通用 工具
    使用SharePoint创建和定义自己的网站页面
  • 原文地址:https://www.cnblogs.com/Manuel/p/10572142.html
Copyright © 2020-2023  润新知