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

相关文章

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents:

bcolz文档

原文:http://bcolz.blosc.org/en/latest/reference.html First level variables bcolz.__version__'''bcolz包的版本。''' bcolz.dask_here'''是否检测到dask的最低版本。''' bcolz.min_dask_version'''需要dask的最低版本(dask是可选

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel