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,'','\n','\r'以及'\r\n'。它的工作方式如下: 在输入时,如果newline是None,通用新行模式打开。输入的新行可以'\n', '\r'或 '\r\n'结尾,它们在被返回给调用者之前都将被转义成'\n'。如果它是'',新行模式打开,
新行将被原样返回给调用者。如果新行中包含任何有效字符,该行只会以给定的字符来确定该行结束。
在输出时,如果newline是None,'\n'将是默认的行分隔符(即os.linesep)。如果新行是'',则不会进行转义。如果新行包含任何有效字符,'\n'字符串将转义成给定字符串。 如果closefd为False,并且给定的是文件描述符而不是文件名,当文件关闭的时候,底层的文件描述符仍然保持开启。如果给定了文件名,则closefd无效而且必须是True(默认就是True)。 open()函数返回的文件对象取决于模式。当使用文本模式打开文件时,它返回一个TextIOBase的子类。当使用二进制打开时,返回的是BufferedIOBase的子类。
准确细分为:可读二进制模式,返回BufferReader对象;在可写和追加模式中,返回BufferWriter对象,在读写模式中,返回BufferRandom。当buffering关闭时,原始数据流,一个RawIOBase的子类将被返回。 还可以使用unicode或者字节字符串当作一个文件来进行读写。对于unicode字符串,将像文本一样使用StringIO对其进行处理,而二进制则使用BytesIO。

python io 模块之 open() 方法(好久没写博客了)的更多相关文章

  1. 利用border和伪类画出三角形 ps:好久没写博客了。。。

    有一个半月没有写博客了,这段时间,小哥我经历了自入行前端最为黑暗的时期,迷茫,空虚,不想写代码,不想做研究了.连打游戏都没有兴趣,如同行尸走肉一般.还好,毕业论文的初稿完成后,整个时间段最恶心最难熬的 ...

  2. c++设计模式总结 好久没写博客了 实在是忙

    具体代码就不贴出来了   通俗易懂的理解方式      原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品 ...

  3. [Python] io 模块之 open() 方法

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) 打开file ...

  4. 总结下js中匿名函数的写法~好几天没写博客了。。。

    小哥最近很是心烦啊,不仅仅要继续以现任前端小白,未来前端攻城狮的身份苦逼学习,还要用剩余的时间去完成毕业设计.早知如此,当初我为毛要报考数学这么个苦逼专业....昨天一整天的时间在研究毕设,感觉代码已 ...

  5. 好久没有写博客了,发现Live Writer也更新了

    最近由于工作变动,工作内容和心态也有所变化,所以很久没有写博客了,而且我的开源项目深蓝词库转换也很近没有更新了.今天打开LiveWriter发现居然有新版本,于是果断更新.现在新的LiveWriter ...

  6. bootstrap部分---网格系统;(几天没写博客了,为了潜心研究一下bootstrap)

    1工作原理: (1)行必须放置在 .container class 内,以便获得适当的对齐(alignment)和内边距(padding). (2)使用行来创建列的水平组. (3)内容应该放置在列内, ...

  7. 查看python中模块的所有方法

    查看python中模块的所有方法     安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...

  8. python解析模块(ConfigParser)使用方法

    python解析模块(ConfigParser)使用方法 很多软件都有配置文件,今天介绍一下python ConfigParser模块解析配置文件的使用方法 测试配置文件test.conf内容如下: ...

  9. 好久没写原生的PHP调用数据库代码了分享个

    好久没写原生的PHP代码调用数据库了 eader("Content-type: text/html; charset=utf-8"); $time=$symptoms=$attr= ...

随机推荐

  1. TensorFlow在win10上的安装与使用(二)

    在上篇博客中已经详细的介绍了tf的安装,下面就让我们正式进入tensorflow的使用,介绍以下tf的特征. 首先tf有它独特的特征,我们在使用之前必须知晓: 使用图 (graph) 来表示计算任务, ...

  2. STL-pair

    每个pair 可以存储两个值.这两种值无限制. 定义 pair<int,char> p; pair<string,int> p; pair<int,int> p; ...

  3. Python 控制流、列表生成式

    Python的三种控制流.认识分支结构if.认识循环结构while.认识循环结构for.Break语句.Continue语句.

  4. python作业模拟计算器开发(第五周)

    作业需求: 模拟计算器开发: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...

  5. 【codeforces】940F题解

    CF Round #466的最后一题,颇有难度,正解是带修改莫队算法. [题意] 给定一个长度为\(n\)的数组\(a\),并且要求执行\(q\)个操作,有两种不同的操作: ①询问一个区间\([l,r ...

  6. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写

    1.源码免杀 1.1 定位产生特征的源码 定位文件特征 1.根据MyCCL的特征码定位工具,定位出有特征的地址 2.根据VS的反汇编窗口,输入有特征的地址得到特征地址与源码的关系 3.插入Messag ...

  7. Vim 快捷键整理【转】

    转自:http://blog.csdn.net/ceven2010/article/details/7406341 一.移动光标 1.左移h.右移l.下移j.上移k 2.向下翻页ctrl + f,向上 ...

  8. 【Linux技术】autotools制作makefile过程详解【转】

    转自:http://www.cnblogs.com/lcw/p/3159461.htmlPreface Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件 ...

  9. docker stack 部署 rabbitmq 容器

    =============================================== 2018/5/13_第1次修改                       ccb_warlock == ...

  10. js数据绑定(模板引擎原理)

    <div> <ul id="list"> <li>11111111111</li> <li>22222222222< ...