基础篇
1. IO编程
IO(Input/Output,输入输出),凡是用到数据交换的地方,都会涉及到IO,由IO引出一个Stream(流)的概念,分为:Input Stream(输入流)和Output Stream(输出流);“流”是水管,“数据”是水管中的水,但只能单向流,数据传输过程中需要架设2条水管,一个输入,一个输出,这样读写可以实现同步。
1 文件读写
①open函数
语法:open(name,mode,buffering)
参数解释:
name,打开的文件名,必填项;
mode,模式,可选项,默认是读模式;
buffering,缓冲区,可选项,默认缓冲区无;
试着读一个本地文件,我在E盘建立一个Github.txt文件,里面输入Hello,Hello,Hello!
然后试着读一读它;
红框里的是代码,黄框是读出的结果;
详解一下文件模式:
值 | 功能描述 |
---|---|
r | 读模式 |
w | 写模式 |
a | 追加模式 |
b | 二进制模式(可添加到其他模式中使用) |
+ | 读/写模式(可添加到其他模式中使用) |
备注:‘b’模式,一般处理文本文件不用,处理一些其他类型的二进制文件,比如mp3音乐或图像,需在模式参数中增加‘b’,在爬虫中处理媒体文件很常用,‘rb’可以读取一个二进制文件。
文件缓冲区:
值 | 功能描述 |
---|---|
0 | I/O操作就是无缓冲区 |
1 | I/O操作就是有缓冲区,数据先写入内存里,只有使用flush函数或者close函数才会将数据写入到硬盘上; |
>1的数 | 缓冲区的大小,单位是字节, |
<=-1的数 | 默认缓冲区的大小 |
文件读取
:主要分为按字节读取和按行读取,常用的如下:
参数 | 功能描述 |
---|---|
read() | 一次性将文件内容全部读到内存中,最后返回是str类型的对象; |
readlines() | |
close() | 文件使用后,必须关闭,防止会占用操作系统资源,影响系统的I/O操作。 |
由于文件操作可能会出现I/O异常,一旦出现异常,后面close()方法不会调用,可以用try… finally…
read()详解:
调用read()可一次性将内容读到内存,但文件过大,会导致内存不足的问题,针对文件过大,可以反复调用read(size),一次最多读取size个字节,如果是文本文件,可以调用readline()每次读取一行;调用readlines()一次读取所有内容并按行返回列表。
文件写入用write()方法。