鱼C论坛

 找回密码
 立即注册
查看: 1545|回复: 0

[技术交流] Python open() 函数

[复制链接]
发表于 2020-3-16 19:01:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一个账号 于 2020-3-17 10:41 编辑

Python open() 函数


语法
open(file, mode="r", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数

参数描述
file要打开的文件
mode打开方式
encoding设置编码格式,默认为 cp936(GBK)


buffering

buffering 用于设置缓冲策略。传递 0 表示关闭缓冲(仅允许在二进制模式下),1 表示行缓冲(仅在文本模式下可用),

大于 1 表示以指示固定大小的块缓冲区的大小(以字节为单位)。如果没有给出缓冲参数,则默认缓冲策略的工作方式如下:

二进制文件以固定大小的块缓冲;默认 buffer 大小由 io.DEFAULT_BUFFER_SIZE 确定。在许多系统上,缓冲区通常为 4096 或 8192 字节长。

“交互式” 文本文件(isatty() 返回 True 的文件)使用行缓冲。其他文本文件使用上述策略用于二进制文件。

errors

errors 表示指定如何处理编码和解码错误,这不能在二进制模式下使用。

可以使用各种标准错误处理程序(在错误处理程序下列出),但已在 codecs.register_error() 中注册的任何错误处理名称也是有效的。

newline

行符 newline 控制通用换行模式的工作方式(仅适用于文本模式)。

它可以是None, ``, \n, \r 和 \r\n。它的工作原理如下:

从流中读取输入时,如果换行为None,则启用通用换行模式。

输入中的行可以以\n,\r或\r\n结尾,并且在返回给调用者之前将这些行转换为\n。

如果是 ``,则启用通用换行模式,但行结尾将返回到未翻译的调用者。

如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结尾将返回给未调用的调用者。

将输出写入流时,如果换行为 None,则写入的任何 "\n" 字符都将转换为系统默认行分隔符 os.linesep 。

如果换行符是 `` 或 \n,则不会进行翻译。如果换行符是任何其他合法值,则写入的任何 "\n" 字符都将转换为给定的字符串。

closefd

如果 closefd 为 False 并且给出了文件描述符而不是文件名,则在关闭文件时,

底层文件描述符将保持打开状态。如果给出文件名,则 closefd 必须为 True(默认值),否则将引发错误。

opener

通过传递可调用的 opener 可以使用自定义 opener。然后通过使用(file,flags)调用opener来获取文件对象的基础文件描述符。

opener必须返回一个打开的文件描述符(传递 os.open 作为 opener 导致类似于传递 None 的功能)。

新创建的文件是不可继承的。

打开方式

模式描述
r以只读模式打开,文件不存在会报错
rb以二进制只读模式打开一个文件
r+以读写模式打开,文件不存在会报错
rb+以二进制读写模式打开一个文件,文件不存在会报错
w以写入模式打开一个文件,如文件存在删除里面的内容,文件不存在创建新文件
wb以二进制写入模式打开一个文件,如文件存在删除里面的内容,文件不存在创建新文件
w+以读写模式打开,如文件存在删除里面的内容,文件不存在创建新文件
wb+以二进制读写模式打开一个文件,如文件存在删除里面的内容,文件不存在创建新文件
a以写入模式打开一个文件,如果文件存在往后追加(文件指针在最后面),如果不存在创建新文件
ab以二进制写入模式打开一个文件,如果文件存在往后追加(文件指针在最后面),如果不存在创建新文件
a+以读写模式打开一个文件,如果文件存在往后追加(文件指针在最后面),如果不存在创建新文件[
ab+以二进制读写模式打开一个文件,如果文件存在往后追加(文件指针在最后面),如果不存在创建新文件


描述

open() 函数用于打开一个文件,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

返回值

文件对象。

例子
>>> file = open("d:/test.txt", "a", encoding="utf-8", buffering=1)
>>> print(file)
<_io.TextIOWrapper name='d:/test.txt' mode='a' encoding='utf-8'>
>>> print(type(file))
<class '_io.TextIOWrapper'>

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
蒋博文 + 1 + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表