Python之文件操作

一:文件

文件I/O常用操作:

  1. open:打开或者要创建的文件名,如果不指定路径,默认是当前路径!

    mode模式:
    r:缺省的,表示只读打开
    w:只写打开,默认覆盖原文件
    x:创建并写入一个新文件,如果文件已经存在抛出异常
    a:写入打开,如果文件存在,则追加
    b:二进制模式
    t:缺省的,文本模式
    +:读写打开一个文件,给原来只读、只写方式打开提供缺省的读或写能力。

  2. read:读取

    read(size):size表示读取多个字符或字节;负数或者None表示读取到EOF

  3. write:写入

    write(s):把字符串写入到文件中并返回字符的个数
    writelines(lines):将字符串列表写入文件

  4. close:关闭

    1,flush并关闭文件对象
    2,文件已经关闭,再次关闭没有任何效果

  5. readline:读取行

    readline(size):一行一行读取文件内容,size设置一次能读取行内几个字符或字节

  6. readlines:多行读取

    readlines(hint):读取所有行的列表,指定hint则返回指定的行数

  7. seek:文件指针操作

  8. tell:指针位置

  9. errors:None和strict表示有编码错误将抛出ValueError异常;ignore表示忽略

  10. newline:文本模式中,换行的转换。可以为None、”、’\r’、’\n’、’\r\n’

    读时:None表示’\r’,’\n’,’\r\n’都被转换为’\n’;表示不会自动转换通用换行符;其他合法字符表示换行就是指定字符,就会按照指定字符分行

    写时:None表示’\n’都会被替换为系统缺省行分隔符os.linesep;’\n’或”表示不替换;其他合法字符表示’\n’会被替换为指定的字符

  11. closed:关闭文件描述符

    True:表示关闭
    False:会在文件关闭后保持这个描述符

  12. seekable():是否可seek

  13. readable():是否可读

  14. writable():是否可写

  15. closed:是否已经关闭

    打开操作:打开一个文件,返回一个文件对象(流对象)和文件描述符。打开文件失败,则返回异常。
    格式:
    open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    文件模式:不同模式下,操作函数不相同,表现的结果也不一样。
        文本模式:
            文本模式支持从开头向后偏移的方式:
            1,whence为1表示从当前位置开始偏移,但是只支持偏移0,相当于原地不动
            2,whence为2表示从EOF开始,只支持偏移0,相当于移动文件指针到EOF
            3,seek是按字节偏移的
        二进制模式:
            1,whence为0时,表示从头开始,offset只能是正整数
            2,whence为1时,表示当前位置,offset可正可负
            3,whence为2时,表示从EOF开始,offset可正可负
    

文件指针:指向当前(字节)位置!!!

  1. tell():显示指针当前位置
  2. seek(cookie, whence=0):移动指针位置。

cookie偏移量
whence:从哪里开始:

  • 0:缺省,表示从头开始,offset只能是正整数
  • 1:表示从当前位置,offset只接受0
  • 2:表示从EOF开始,offset只接受0

BUFFERING:缓冲区

  • -1:表示使用缺省大小的buffer,如果是二进制模式,使用io.DEFAULT_BUFFER_SIZE,默认是4096或者是8192。
  • 0:只在二进制模式使用,表示关闭buffer
  • 1:只在文本模式使用,表示使用行缓冲,意思是见到换行符就flush
  • >1:大于1用于指定buffer的大小

buffer缓冲区:

  • 缓冲区指一个内存空间,一般来说是一个FIFO队列,到缓冲区满或者达到阈值,数据才会flush到磁盘!
  • flush():将缓存区数据写入磁盘
  • close():关闭前会调用flush()

重点:

  1. 文本模式,一般都用默认缓冲区大小
  2. 二进制模式,是一个个字节的操作,可以指定buffer的大小
  3. 一般来说,默认缓冲区大小是个比较好的选择,除非明确知道,否则不调整它
  4. 一般编程中,明确知道需要写磁盘,都会手动调用依次flush,而不是等到自动flush或者close的时候!

二,文件I/O上下文管理

上下文管理:一种特殊的语法,交给解释器去释放文件对象
格式:

  • 使用with… as 关键字
  • 上下文管理的语句块并不会开启新的作用域
  • with语句块执行完的时候,会自动关闭文件对象

代码:

def copys(src:str, dst:str):
    with open(src) as srcfile:
        with open(dst, 'w') as dstfile:
            dstfile.write(srcfile.rea
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值