首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python3 Python IO编程

本系列主要学习Python的基本使用和语法知识,后续可能会围绕着AI学习展开。

Python3 (1) Python语言的简介

Python3 (2) Python语法基础

Python3 (3) Python函数

Python3 (4) Python高级特性

Python3 (5) Python 函数式编程

Python3 (6) Python 模块

Python3 (7) Python 面向对象编程

Python3 (8) Python 面向对象高级编程

Python3 (9) Python 错误、调试和测试

Python3 (10) Python IO编程

这篇IO 编程,主要介绍Python 对文件的操作,文件流的输入输出,序列化操作 。关于IO (Input/Output)的概念,这里指程序运行时,数据在内存中由CPU 来快速的执行各种操作,数据在 内存、磁盘、网络等涉及数据交互的地方,都需要IO编程。数据编程分为同步IO和异步IO。

文件读写

文件操作是典型的IO操作,Python 中的读写操作与C是兼容的。并且我们要清楚读写文件是操作系统执行的,不是我们代码程序来执行的,我们的内置函数只是调用的操作系统的读写操作。

读文件

文件的读取有三个步骤:

1.打开文件

2.读取数据

3.关闭数据

输出结果:

首先文件读取完成后要关闭文件,来解除资源占用问题,所以我们要用来包含代码块,在代码块出现错误异常时,也可以及时的关闭文件。python中的语句可以代替这个操作,如上的代码;最后我们看读取文件的三种方式:一次性读取所有数据,当数据过大时,可以通过read(size) 来限制每次读取数据的大小,按次序读取每行数据。 读取所有数据返回每行的。读取每行主要是获取配置文件的数据。

file-like Object

是典型的鸭子类型,方法返回的是包括函数的对象,我们将包括对象的类统称为,所以除了之外,内存的字节流,网络流,自定义流只要有函数都可以成为,而不用遵循继承规则。

二进制文件

函数读取的数据默认是 格式的文本文件,如果要读取二进制文件应该通过 模式打开:

字符编码

如果要读取非 UTF-8 格式的文本文件,我们需要在open()中传入编码格式,如 GBK编码:

对于不规范的编码文件,可以忽略掉:

写文件

写数据与读数据相同:

1.打开文件 open()

2.读取数据 write()

3.关闭数据 close()

输出结果:

写文件只是将open()方法的参数改成,每次会覆盖原有的数据,可以在原数据基础上追加。

内存中读写

内存中的读写 分为 StringIO、BytesIO,分别读写,bytes。

StringIO 的读写

输出结果:

BytesIO 的读写

输出结果:

StringIO和BytesIO是在内存中操作str和bytes的方法。与读取文件的接口一致。

操作文件和目录

Python内置的模块提供了可以直接调用操作系统提供的接口函数。让我们python 程序中可以调用系统的文件操作系统成为可能。

输出结果:

说明是windows 系统。并且so 模块中的某些函数时针对操作系统的,有些操作系统,可能没有相对应的函数。

环境变量

python 可以通过可以获得系统的环境变量。

输出结果:

输出结果:

操作文件和目录

python 中模块中包含各种文件操作和目录的方法。

这样我们就可以查看目录,创建删除目录,和各种文件相关的操作,与java中的file方法相似。

序列化

我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

输出结果:

Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

JSON

JSON 数据是现在网络传输、解析 最流行的数据接口,解析速度快,结构简单,Python也支持Json对象的相互转换。

输出结果:

JSON 进阶

Json对象与类的实例相互转换

输出结果:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180130A17EUF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券