Python open() 打开文件

您所在的位置:网站首页 使用open()函数时,指定打开文件的模式有哪几种 Python open() 打开文件

Python open() 打开文件

2024-07-15 00:42:59| 来源: 网络整理| 查看: 265

本内容来自:https://gairuo.com

说明

《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。

本内容来自:https://gairuo.com

Python 内置函数 open() 用来打开一个文件并创建一个文件(file)对象,我们一般再使用 file 对象的方法对文件进行一系列操作,比如读取、写入、保存等。

快速使用

最简单的打开读取一个文件:

# 在当前目录下打开测试文件 f = open("test.txt") # 指定完整路径 f = open("C:/Python33/README.txt")

一般对文件的操作都放在上下文管理器中:

with open("test.txt") as f: # 从流中读取并返回包含多行的列表,一般按行进行迭代处理 f.readlines() f.readline() # 从流中读取并返回一行 语法

open() 的功能是打开 file 并返回对应的 file object。 如果该文件不能被打开,则引发 OSError(可以上下文管理器 with 控制)。新创建的文件是不可继承的。

它的语法参数比较多,如下:

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

参数介绍:

file:file 是一个类路径对象(path-like object),表示将要打开的文件的路径 mode:默认为 'r',用于指定打开文件的模式,可见下文介绍。 buffering:设置缓冲策略 encoding:是用于解码或编码文件的编码的名称,这只能在文本模式下使用,默认编码依赖于平台,但 Python 支持的任何编码都可以传递。 errors:指定如何处理编码和解码错误,不能在二进制模式下使用。 newline:控制如何换行 closefd:如果 closefd 为 False 且给出的不是文件名而是文件描述符,那么当文件关闭时,底层文件描述符将保持打开状态。如果给出的是文件名,则 closefd 必须为 True (默认值),否则将触发错误。 opener: 可以通过传递可调用的 opener 来使用自定义开启器。然后通过使用参数( file,flags )调用 opener 获得文件对象的基础文件描述符。 opener 必须返回一个打开的文件描述符(使用 os.open as opener 时与传递 None 的效果相同)。 文件路径 file

file 是一个类路径对象(path-like object),表示将要打开的文件的路径(绝对路径或者相对当前工作目录的路径),也可以是要封装文件对应的整数类型文件描述符。(如果给出的是文件描述符,则当返回的 I/O 对象关闭时它也会关闭,除非将 closefd 设为 False 。)

路径类对象(path-like object)代表一个文件系统路径的对象。类路径对象可以是一个表示路径的 str 或者 bytes 对象,还可以是一个实现了 os.PathLike 协议的对象。一个支持 os.PathLike 协议的对象可通过调用 os.fspath() 函数转换为 str 或者 bytes 类型的文件系统路径;os.fsdecode() 和 os.fsencode() 可被分别用来确保获得 str 或 bytes 类型的结果。此对象是由 PEP 519 引入的。

打开文件模式 mode

mode 是可选的字符串,用于指定打开文件的模式。默认值是 'r' ,表示以文本模式打开并读取文件。其他常见模式有:写入模式 'w' (已存在文件会被清空)、独占创建模式 'x' 、追加写入模式 'a' (在 某些 Unix 系统中,无论当前文件指针在什么位置,所有 的写入操作都会追加到文件末尾)。在文本模式,如果未指定 encoding ,则会根据当前平台决定编码格式:调用 locale.getpreferredencoding(False) 获取当前地区的编码。若要读写原生字节格式,请使用二进制模式且不要指定 encoding。

可用的模式有:

'r':读文件 (默认) 'w':打开以进行写入,首先截断文件 'x':创建一个新文件并打开它进行写入,如果存在则失败 'a':打开进行写入,如果文件存在,则追加到文件末尾 'b':二进制模式 't':文本模式 (默认) '+':打开文件进行更新(读写) 'U':通用换行模式(已弃用)

一些规则:

默认模式为 'r' (打开文件用于读取文本,与 'rt' 同义)。 'w+' 和 'w+b' 模式将打开文件并清空内容。 而 'r+' 和 'r+b' 模式将打开文件但不清空内容。

Python 区分二进制和文本I/O。以二进制模式打开的文件(包括 mode 参数中的 'b' )返回的内容为 bytes 对象,不进行任何解码。在文本模式下(默认情况下,或者在 mode 参数中包含 't' )时,文件内容返回为 str ,首先使用指定的 encoding (如果给定)或者使用平台默认的的字节编码解码。

另外还有一种模式字符 'U' 可用,不过它已失效,并视作弃用。以前它会在文本模式中启用 universal newlines,这在 Python 3.0 已成为默认行为。详情请参阅 newline 形参的文档。

Python不依赖于底层操作系统的文本文件概念,所有处理都由Python本身完成,因此与平台无关。

缓冲策略 buffering

buffering 是用于设置缓冲策略的可选整数。规则有:

缓冲是用于设置缓冲策略的可选整数。规则有:

传递 0 以关闭缓冲(仅在二进制模式下允许) 传递 1 以选择行缓冲(仅在文本模式下可用) 传递大于1的整数以指示固定大小块缓冲区的字节大小 如果取负值,寄存区的缓冲大小则为系统默认

如果未给出缓冲参数(使用默认的或者负值),默认缓冲策略的工作方式如下:

二进制文件缓冲在固定大小的块中; 缓冲区的大小使用启发式选择,试图确定底层设备的默认缓冲区块大小(block size)和 回溯到 io.DEFAULT_BUFFER_SIZE 和回溯到io。默认缓冲区大小。在许多系统上,缓冲区的长度通常为4096或8192字节。 “交互式”文本文件( satty() 返回 True的文件)使用行缓冲。其他文本文件使用上述策略用于二进制文件。 处理错误 errors

errors 是一个可选的字符串参数,用于指定如何处理编码和解码错误 - 这不能在二进制模式下使用。可以使用各种标准错误处理程序(列在 错误处理方案 ),但是使用 codecs.register_error() 注册的任何错误处理名称也是有效的。标准名称包括:

如果存在编码错误,'strict' 会引发 ValueError 异常。 默认值 None 具有相同的效果。 'ignore' 忽略错误。请注意,忽略编码错误可能会导致数据丢失。 'replace' 会将替换标记(例如 '?' )插入有错误数据的地方。 'surrogateescape' 将把任何不正确的字节表示为 U+DC80 至 U+DCFF 范围内的下方替代码位。 当在写入数据时使用 surrogateescape 错误处理句柄时这些替代码位会被转回到相同的字节。 这适用于处理具有未知编码格式的文件。 只有在写入文件时才支持 'xmlcharrefreplace'。编码不支持的字符将替换为相应的XML字符引用 &#nnn;。 'backslashreplace' 用Python的反向转义序列替换格式错误的数据。 'namereplace' (也只在编写时支持)用 \N{...} 转义序列替换不支持的字符。 换行控制 newline

newline 控制 universal newlines 模式如何生效(它仅适用于文本模式)。它可以是 None,'','\n','\r' 和 '\r\n'。它的工作原理:

从流中读取输入时,如果 newline 为 None,则启用通用换行模式。输入中的行可以以 '\n','\r' 或 '\r\n' 结尾,这些行被翻译成 '\n' 在返回呼叫者之前。如果它是 '',则启用通用换行模式,但行结尾将返回给调用者未翻译。如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结尾将返回给未调用的调用者。 将输出写入流时,如果 newline 为 None,则写入的任何 '\n' 字符都将转换为系统默认行分隔符 os.linesep。如果 newline 是 '' 或 '\n',则不进行翻译。如果 newline 是任何其他合法值,则写入的任何 '\n' 字符将被转换为给定的字符串。 文件对象

open() 函数所返回的 file object 类型取决于所用模式。 当使用 open() 以文本模式 ('w', 'r', 'wt', 'rt' 等) 打开文件时,它将返回 io.TextIOBase (特别是 io.TextIOWrapper) 的一个子类。 当使用缓冲以二进制模式打开文件时,返回的类是 io.BufferedIOBase 的一个子类。 具体的类会有多种:在只读的二进制模式下,它将返回 io.BufferedReader;在写入二进制和追加二进制模式下,它将返回 io.BufferedWriter,而在读/写模式下,它将返回 io.BufferedRandom。 当禁用缓冲时,则会返回原始流,即 io.RawIOBase 的一个子类 io.FileIO。

另请参阅文件操作模块,如 fileinput、io (声明了 open())、os、os.path、tempfile 和 shutil。

引发一个 审计事件 open 附带参数 file, mode, flags。

mode 与 flags 参数可以在原始调用的基础上被修改或传递。

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

file 对象方法

以下是一些常见的 file 对象方法:

f.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。 f.readline():返回一行。 f.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。 for line in f: print line :通过迭代器访问。 f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。 f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。 f.seek(偏移量,[起始位置]):用来移动文件指针。 - 偏移量: 单位为字节,可正可负 - 起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾 f.close() 关闭文件 示例

下面的示例使用 os.open() 函数的 dir_fd 的形参,从给定的目录中用相对路径打开文件:

>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # 不要泄露文件描述符 相关内置库 io os 参考 https://docs.python.org/zh-cn/3/library/functions.html#open https://docs.python.org/zh-cn/3/tutorial/inputoutput.html#tut-files https://www.programiz.com/python-programming/methods/built-in/open https://docs.python.org/zh-cn/3/library/io.html#module-io 相关内容 Python习题 153:合并两个 txt 文件内容 2024-01-08 18:23:32 pandas 读取解析实验数据到 DataFrame 2022-05-10 17:17:36 iter() 生成迭代器 Python 内置函数 pow() 求n次幂 >

更新时间:2022-05-16 15:02:26 标签:python open 文件



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭