zoukankan      html  css  js  c++  java
  • python文件操作-r、w、a、r+、w+、a+和b模式

    对文件操作的基本步骤

    f=open('a.txt','r',encoding='utf-8')
    data=f.read()
    print(data)
    f.close()

    文件的打开和关闭使用open()、close()函数,文件刚打开时光标在最前面

    open()函数的第一个参数为要打开的文件名,默认路径为这个脚本所在路径;第二个参数为打开模式,第三个参数为编码格式

    文件的打开模式如下,省略的话默认为只读r,文件必须存在否则会报错;使用只写w模式打开,如果文件存在则先将原文件内容清空再写,不存在则创建一个空文件再写;使用读写模式a打开如果文件存在则在原文件内容上追加写,不存在的话先创建

     

    f.readable()  判断文件是否可读,返回True或False

    f.readline()  每次读取一行,当读取到文件末尾时再执行readline读取内容为空

    f.readlines()  将文件所有内容读出放到一个列表,每行内容为一个元素,例如['hello ', 'hi ', 'nice ']

    如果在文件打开时,指定newline=‘’,则换行的结果显示为/r/n(windows平台的换行符为/r/n,unix和linux平台的换行符为/n)

    f1=open('b.txt','r',encoding='utf-8')
    f2=open('b.txt','r',encoding='utf-8',newline='')
    print(f1.readlines())
    print(f2.readlines())
    f1.close()
    f2.close()
    执行结果为
    ['123
    ', 'abc']
    ['123
    ', 'abc']

    f.writable()  判断文件是否可写,返回True或False

    f.closed  判断文件是否关闭,返回True或False

    f.write()  将内容写入文件

    f.writelines()  将列表内容写入文件,f.writelines(['hello ', 'hi ', 'nice '])

    f.encoding 文件打开时候的编码

    f.flush()  将内容中的内容刷到硬盘

    直接使用open函数打开文件时,还需要手动关闭close文件,否则文件会一直占据内存。使用with open() as f打开文件则无需手动关闭,使用例子如下。

    def file_operation():
        with open('a.txt','a+',encoding='utf-8') as f:
          f.write('hello')
        print(f.read())

    文件默认是以t即文本模式进行处理,

    b为二进制模式,可以处理除了文本之外的图片、音频、视频等格式的文件,还可以跨平台处理

    f=open('test11.py','rb')------以b的方式打开文件时不能指定编码

    data=f.read()

    print(data.decode('utf-8'))------读取之后以utf-8格式对二进制进行解码

    f=open('test22.py','wb')

    f.write(bytes('1111 ',encoding='utf-8'))--------bytes函数将指定内容以uft-8格式编码为二进制

    f.write('22222 '.encode('utf-8'))----------encode直接将指定内容以uft-8格式编码为二进制

    文件内光标的移动

    除去read( )是以字符进行读取的,其他光标的移动都是以字节为单位进行的,如seek、tell、truncate

    read(3)表示读取3个字符

    seek(3)表示光标向后移动3个字节,默认是从光标在文件最前面开始,也即seek(3,0)

    光标的相对移动需要在打开时指定b模式,seek的第二个参数表示移动方式,0为默认方式,即从文件最开头移动,1是相对上一次移动,2是从文件末尾移动

    seek(3,1) 表示从光标上一次所在的位置向后移动3个字节

    seek(-3,2)表示从文件末尾开始向前移动

    truncate(3)表示截取文件前3个字节,必须以可写的方式打开,w和w+除外

    tell( )表示显示当前光标所在的字节

  • 相关阅读:
    Mybatis的缓存
    Mybatis使用assocation和Collection实现延迟加载
    Mybatis:一对多的查询
    Mysql:事务
    Mysql:多表查询
    Mysql:数据库的设计
    Mysql:约束
    MYSQL:DQL-查询表中的记录
    panic: cannot create context from nil parent
    $request input 获取参数null
  • 原文地址:https://www.cnblogs.com/Forever77/p/9801571.html
Copyright © 2011-2022 走看看