Python3.2官方文档翻译--文件读写

2024-03-02 20:48

本文主要是介绍Python3.2官方文档翻译--文件读写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5.2文件读写 

Open()方法返回一个文件对象,在大多数情况下传递两个对象: openfilename, mode);

例如:

>>> f = open(/tmp/workfilew)

第一个参数是包含文件名称的字符串,第二个参数是包含描述文件使用方式的字符串。如果文件只读标记为“r,只写标记为“w”(相同名字的已经存在文件将会被清除),, “a”表示添加到文件结尾,数据就会自动的添加到文件的结尾。“r+”表示可读可写。Mode参数是可选择的,如果没有此参数,默认表示可读的。

 

正常来说,文件会在text模式下打开,这就意味着你可以读写字符串到文件中,并且可以设置读写的编码格式(默认编码格式是utf-8.’b’表示用二进制的方式打开文件。这些数据将会用字节对象形式进行读写。这种模式可以用在所有的非文本格式文件中。

 

在文本格式中,默认的将平台特殊的换行结束符(在Unix\n,在windos\r\n)换成\n并在写入文件时转换回去。这是文件修改是无害的,但是在JPEG或者EXE文件中会破坏二进制数据。所以当读写这类文件时最好用二进制格式。

5.2.1 文件对象中方法

在这节所有的例子中假设一个名f的文件已创建。 

为了读取文件的内容,调用f.read(size). 这个方法就能读取一定大小的数据并且返回一个字符串或者字节对象。Size是可选择的数字参数。当size缺少或者是负数,返回的就是整个文件内容。如果文件内容是你内存的两倍大,那就是你的问题了。不过,你应该尽可能大字节的读取文件内容,如果已经达到文件尾,f.read()将返回一个空字符串(“)、

>>> f.read()

This is the entire file.\n

>>> f.read()

’’

F.readline()就是从文件中读取单行,字符结尾会带一个新的字符“\n”,并且仅当在文件最后一行并没有换行符时才会省略。如果f.readline()会返回一个空字符串,则表示已经达到文件的末尾。当用“\n”表示一个空行时,将返回一个只含有一个换行符的字符串。

>>> f.readline()

This is the first line of the file.\n

>>> f.readline()

Second line of the file\n

>>> f.readline()

‘’

F.readlines()返回一个包含文件中多行数据的列表。如果传入一个可选择的sizehint,它就会从文件中读取至少包含指定字节数的完整行并返回之。这个方法通常用来高效地从大文件中逐行读取数据,而不会把整个所有文件内容加载到内存中。此方法只返回完整的文件行。

>>> f.readlines()

[This is the first line of the file.\nSecond line of the file\n]

另一种可供选择读取多行的方法就是循环文件对象。这是一种内存高效,快速和并且代码简洁的方式。

>>> for line in f:

... print(line, end=’’)

...

This is the first line of the file.

Second line of the file
后一种方法虽然代码简洁但是不能提供更加细节控制能力,由于两个方法管理不同的行缓存,千万不要搞混。

F.write(String) 把字节内容写入到文件中,返回写入到文件的字符数量。

>>> f.write(This is a test\n)

15

除了写字符串也可以写入其他内容,但是必须首先转换为字符串。

>>> value = (the answer, 42)

>>> s = str(value)

>>> f.write(s)

18

F.tell()返回一个指文件对象在文件中的当前位置的整数。表示从文件开头到当前位置的字节数。想要改变文件对象的位置,用方法f.seek(offset, from_what). 位置是通过添加offset到参考点计算出来的。参考点通过from_what参数来选择。from_what值意思就是从文件开头开始。值为时代表从当前文件位置开始计算,值为2时表示从文件为开始计算。From_what参数可以省略并且其默认值为0,即使用文件开头作为默认参考点。

>>> f = open(/tmp/workfilerb+)

>>> f.write(b0123456789abcdef)

16

>>> f.seek(5) # Go to the 6th byte in the file

5

>>> f.read(1)

b5

>>> f.seek(-3, 2) # Go to the 3rd byte before the end

13

>>> f.read(1)

bd

在文本文件中(在字符串模式下用‘b’打开文件),仅仅婿从文件头开始计算相对位置(使用seek(0,2)从文件尾计算时就会引发异常)

当你使用一个文件时,调用方法f.close()来关闭它,然后释放任何被打开文件所占用的系统资源。在调用方法f.close()之后,试图再次调用文件对象就会自动失败。

>>> f.close()

>>> f.read()

Traceback (most recent call last):

File "<stdin>", line 1, in ?

ValueError: I/O operation on closed file

当处理文件对象时候,用with关键字是个很好的习惯。它有个益处: 在文件一系列操作结束后它就可以正确地关闭。从某种角度而言 异常也有值得表扬一面。它也比同等功能的try-finally 代码块更简洁。

>>> with open(/tmp/workfiler) as f:

... read_data = f.read()

>>> f.closed

True

文件对象有许多其他方法,例如isatty()truncate(),这些方法相对使用的不太频繁。详细请查看库文件指导文档。

5.2.2 pickle模块

字符串很容易从文件中读写。数字则需要更多的处理,由于read()方法只能返回字符串,因此它不得不传给像int()函数,该方法能接受字符串“123”而返回数值123. 但是,当你想更复杂的数据类型时候,例如列表,字典或者类实例,这些变得更加复杂。

 

为了不让用户不同编码和调试代码来保存复杂数据类型,python提供了一个叫pickle的标准接口。这是一个能处理任何python对象的神奇模块。(甚至一些格式的python代码)。并且把它转化为字符串。这个过程叫做pickling(封装)。 从字符串形式来重建这个对象就成unpickling(拆封)。在拆封和封装过程中,表现对象的字符串形式会保存在文件或者数据中,或者通过网络连接发送给远程机器。

 

如果你有个对象x,和一个正在打开写的文件对象f,最简单封装对象的方法仅仅用一行代码:

pickle.dump(x, f)

如果f是一个正在读的文件对象,可用如下代码重构这个对象:

x = pickle.load(f)

(当封装许多对象时候或者当你不想写封装的数据到文件,这里还有其他方法,具体请咨询在python库文件引用有关pickle的完整文档。)

Pickle是一个来创建需要保存或者被其他程序或者同一个程序将来需要重新创建的python对象的标准方法。术语称为persistent对象(持久化对象)。Pickle模块被如此广泛的使用。许多python扩展开发者都非常注意像矩阵这样的新数据类型是否可以被适当的封装和拆封。

这篇关于Python3.2官方文档翻译--文件读写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767383

相关文章

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh