JSON

7. 输入和输出 Python tutorial 2.7.13 2.7.13 documentation(2)

字号+ 作者:H5之家 来源:H5之家 2017-10-11 08:00 我要评论( )

f.tell() 返回一个整数,代表文件对象在文件中的指针位置,该数值计量了自文件开头到指针处的比特数。需要改变文件对象指针话话,使用 f.seek(offset,from_what) 。指针在该操作中从指定的引用位置移动 offset 比特

f.tell() 返回一个整数,代表文件对象在文件中的指针位置,该数值计量了自文件开头到指针处的比特数。需要改变文件对象指针话话,使用 f.seek(offset,from_what)。指针在该操作中从指定的引用位置移动 offset 比特,引用位置由 from_what 参数指定。 from_what 值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始。from_what 可以忽略,其默认值为零,此时从文件头开始:

在文本文件中(那些没有使用 b 模式选项打开的文件),只允许从文件头开始计算相对位置(使用 seek(0, 2) 从文件尾计算时就会引发异常)。

当你使用完一个文件时,调用 f.close() 方法就可以关闭它并释放其占用的所有系统资源。在调用 f.close() 方法后,试图再次使用文件对象将会自动失败:

File "<stdin>", line 1, in ? ValueError: I/O operation on closed file

用关键字 处理文件对象是个好习惯。它的先进之处在于文件用完后会自动关闭,就算发生异常也没关系。它是 - 块的简写:

文件对象还有一些不太常用的附加方法,比如 和 在库参考手册中有文件对象的完整指南。

7.2.2. 使用 存储结构化数据

从文件中读写字符串很容易。数值就要多费点儿周折,因为 read() 方法只会返回字符串,应将其传入 这样的函数,就可以将 '123' 这样的字符串转换为对应的数值 123。当你想要保存更为复杂的数据类型,例如嵌套的列表和字典,手工解析和序列化它们将变得更复杂。

好在用户不是非得自己编写和调试保存复杂数据类型的代码,Python 允许你使用常用的数据交换格式 JSON(JavaScript Object Notation)。标准模块 可以接受 Python 数据结构,并将它们转换为字符串表示形式;此过程称为 序列化。从字符串表示形式重新构建数据结构称为 反序列化。序列化和反序列化的过程中,表示该对象的字符串可以存储在文件或数据中,也可以通过网络连接传送给远程的机器。

Note

JSON 格式经常用于现代应用程序中进行数据交换。许多程序员都已经熟悉它了,使它成为相互协作的一个不错的选择。

如果你有一个对象 x,你可以用简单的一行代码查看其 JSON 字符串表示形式:

函数的另外一个变体 ,直接将对象序列化到一个文件。所以如果 f 是为写入而打开的一个 ,我们可以这样做:

为了重新解码对象,如果f是为读取而打开的 :

这种简单的序列化技术可以处理列表和字典,但序列化任意类实例为 JSON 需要一点额外的努力。 模块的手册对此有详细的解释。

See also

- pickle 模块

与 不同,pickle 是一个协议,它允许任意复杂的 Python 对象的序列化。因此,它只能用于 Python 而不能用来与其他语言编写的应用程序进行通信。默认情况下它也是不安全的:如果数据由熟练的攻击者精心设计, 反序列化来自一个不受信任源的 pickle 数据可以执行任意代码。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Python爬虫之微打赏爬虫

    Python爬虫之微打赏爬虫

    2017-10-09 17:07

  • Python学习者

    Python学习者

    2017-09-29 16:01

  • python 对象转json Python对象转JSON字符串的方法

    python 对象转json Python对象转JSON字符串的方法

    2017-09-21 09:02

  • python thinkface论坛

    python thinkface论坛

    2017-09-20 11:01

网友点评