zoukankan      html  css  js  c++  java
  • python io 模块之 open() 方法(好久没写博客了)

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file对象并返回对应的数据流。如果打开失败,则抛出IOError异常。
    
    file要么是一个指向需要被打开文件的路径字符串,或者是文件描述符序号。
    
    mode是一个可选字符串,用来指明打开文件的模式。默认为'r',意思是可读文本模式。另一个常见的参数值是'w',表示写入(如果文件存在,则首先清空文件内容。)。
    'a'表示追加,在某些Unix系统中表示无论当前处于文本什么位置,所以内容都要追加到文件末尾。在文本模式中,如果没有指明编码,则默认使用操作系统的编码。
    (对于原始字节的读写使用二进制模式,而不在乎编码是否指定。)以下是可用的模式:
    

    默认的模式是'rt'(文本可读)。对于二进制访问,'w+b'模式会打开并清空文件,而'r+b'只打开文件而不清空。
    
    Python区分文件的打开方式是二进制还是文本,哪怕底层的操作系统不区分它们。用二进制模式(即在mode参数中包含'b')打开的文件会以字节对象返回,不进行任何解码。
    在文本模式(缺省情况或者是mode参数中包含't')下,字节会首先被按照指定的编码方式进行解码,如果没有给出指定的编码方式,则使用操作系统默认的编码方式。
    
     
    
    buffering是一个可选的整数,用来设置buffering策略。0表示关闭buffering(只在二进制模式下),1表示选择行进行缓冲(buffering)(仅限于文本模式),
    大于1的整数表示选择固定大小的块进行缓冲。如果没有给定buffering参数,默认的缓冲策略如下:
    
    二进制文件按照固定大小的块进行缓冲;Python首先试图确定底层设备的block size,然后赋给DEFAULT_BUFFER_SIZE。在许多系统中,
    缓冲大小一般是4096或者8192个字节。交互式文本文件(isatty()返回True的文件)使用行缓冲。其他文本文件使用跟二进制文件一样的策略。
    
    encoding是编码名称,用以编码或者解码文件。这只在文本模式中使用。默认的编码方式是系统的编码方式(即locale.getpreferredencoding()返回值),
    任何Python支持的编码都可以充当该参数。查看codec模块了解所有被支持的编码。
    
     
    errors是一个可选字符串,用以指明如何处理编码或解码异常,该参数在二进制模式不可用。传入'strict'用以在编码异常发生时抛出ValueError异常,
    或者使用'ignore'忽略异常。(注意:忽略编码异常可能导致数据丢失。)'replace'表示遇见不规则数据时插入一个替换符(例如?)代替它。
    'xmlcharrefreplace'表示使用合适的XML字符参考进行替换,'backslashreplace'表示使用反斜杠代替。任何注册到codecs.register_error()中的异常处理名称都是有效的。
    
    
    newline表示如何使用通用新行来标识一个新行。它可能是None,'','
    ','
    '以及'
    '。它的工作方式如下:
    
    在输入时,如果newline是None,通用新行模式打开。输入的新行可以'
    ', '
    '或 '
    '结尾,它们在被返回给调用者之前都将被转义成'
    '。如果它是'',新行模式打开,
    新行将被原样返回给调用者。如果新行中包含任何有效字符,该行只会以给定的字符来确定该行结束。
    在输出时,如果newline是None,'
    '将是默认的行分隔符(即os.linesep)。如果新行是'',则不会进行转义。如果新行包含任何有效字符,'
    '字符串将转义成给定字符串。
     
    
    如果closefd为False,并且给定的是文件描述符而不是文件名,当文件关闭的时候,底层的文件描述符仍然保持开启。如果给定了文件名,则closefd无效而且必须是True(默认就是True)。
    
     
    
    open()函数返回的文件对象取决于模式。当使用文本模式打开文件时,它返回一个TextIOBase的子类。当使用二进制打开时,返回的是BufferedIOBase的子类。
    准确细分为:可读二进制模式,返回BufferReader对象;在可写和追加模式中,返回BufferWriter对象,在读写模式中,返回BufferRandom。当buffering关闭时,原始数据流,一个RawIOBase的子类将被返回。
    
    还可以使用unicode或者字节字符串当作一个文件来进行读写。对于unicode字符串,将像文本一样使用StringIO对其进行处理,而二进制则使用BytesIO。
    
    
  • 相关阅读:
    判断是否是唯一索引异常
    Sign in with Apple java
    spring 集成钉钉机器人
    list一个字段去重
    Math_Linear_algebra_05_正定矩阵
    Math_Linear_algebra_02_矩阵与线性方程
    Math_Calculus_04_多变量微积分
    Math_Linear_algebra_01_向量空间
    Linux_Best Practice_04_Ubuntu 18.04
    PMP_Previw
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/9674499.html
Copyright © 2011-2022 走看看