JSON

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

字号+ 作者:H5之家 来源:H5之家 2018-07-17 17:53 我要评论( )

在文本文件中(没有以 b 模式打开),只允许从文件头开始寻找(有个例外是用 seek(0, 2) 寻找文件的最末尾处)而且合法的 偏移 值只能是 f.tell() 返回的值或者是零。其它任何 偏移 值都会产生未定义的行为。 当你

在文本文件中(没有以 b 模式打开),只允许从文件头开始寻找(有个例外是用 seek(0, 2) 寻找文件的最末尾处)而且合法的 偏移 值只能是 f.tell() 返回的值或者是零。其它任何 偏移 值都会产生未定义的行为。

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

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

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

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

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如何读写json数据,python读写json

    python如何读写json数据,python读写json

    2018-04-23 15:00

  • python数据挖掘:Json结构分析

    python数据挖掘:Json结构分析

    2018-04-23 09:00

  • 程序员的工作,程序员的生活(java,python,delphi实战)

    程序员的工作,程序员的生活(java,python,delphi实战)

    2018-04-22 09:00

  • 容易被忽略的Python高效编程技巧

    容易被忽略的Python高效编程技巧

    2018-04-20 17:00

网友点评
1