PythonIO文件操作,读、取、写

 

 

本篇内容 文件的操作。

文件的练习

文件的操作

读取信息写入信息、文件有那么多的字,在什么地方写入、怎么 控制它。

文件对象 ===  读取 === 写入

 

生成文件对象

Fileobject = open(filename,mode) py3 py2 通用

文件对象 = 打开(文件名称,文件模式)

Fileobject = file(filename,mode)py2用的

 

文件对象 = 文件(文件名称,文件模式)

对文件进行操作。

图形界面打开文件过程,先找到文件 --双击打开。

程序打开文件工程,找到文件--确定是这个文件打开。

程序打开并不是一定能看见,通常是给程序员看或者用户。

通过程序 给某一个文件建立起某一个联系,在这 叫做生成文件对象。

可以理解为,你和文件建立起了联系,你要读取还是写入信息,还没确定。

文件进行操作之前第一步就是生成一个文件对象

两个方法。一个open 一个file

open方法

fileobject = open(filename,mode)  py2,py3 都可用

文件方法 = 打开(文件名,方法)

file方法

fileobject = file(filename,mode) py

文件方法 = 文件(文件名,方法)

要养成一个习惯,用两个都有的  的open。这样用2py也可以,3py也可以。减去后续不必要的麻烦。

 

示范 fileobject = open (filename,mode)

方法 =  确定文件在什么地方,(在什么路径,用读取还是写入方式打开。)

Python文件操作IO open 读-取-写_python第一种情况进入我创建的文件夹选项,进入的的ipython。可直接打开文件

Python文件操作IO open 读-取-写_文件操作_02

返回的提示表达:方式是 r 打开 编码格式是CP936

此时获得并不是文件的内容,只是一个文件获得的一个句柄,或者理解为对象。

 

第二张情况 因为执行的文件环境是同一个目录下,只需要执行文件的名字。

如果不是一个文件目录,需要r文件 指定目录 写上完整路径

Python文件操作IO open 读-取-写_文件操作_03

 

读取文件

注意: 进行读取文件,可以后面方法写上'r' ,也可以不加 ,因为程序默认的就是为'r'的参数

基本文件操作过程

Read 语法

Python文件操作IO open 读-取-写_文件操作_04

选择字节数的操作

Python文件操作IO open 读-取-写_文件操作_05

read列子

Python文件操作IO open 读-取-写_读取写_06

讲解含义

1 先生成一个对象。然后通过对象的方法。《某对象 = 方法》

2 选择是对文件进行读取信息,还是写入信息。《f.read() = 对象 ,阅读》,读到信息

3 操作完毕后对象 文件关闭 ,主要是为了释放内存。《对象.close()》

 

文件操作方法 和对象

Python文件操作IO open 读-取-写_python_07

可以组合使用,比如  r+ 就有读取的作用、rb读取一个二进制文件。

创建文件生成句柄

 

生成文件对象

Python文件操作IO open 读-取-写_读取写_08

创建文件句柄,生成文件对象的时候,是读是写还是追加去写。

 

基本上功能如下图,唯一的区别还是有一点的,先了解下怎么样读取和写入,

然后在看它们的区别

Python文件操作IO open 读-取-写_文件操作_09

 

 

介绍 readline

之前用的read,它是读取全部的内容,

但是有的时候,内容有很多行,每一次只想读取一行,这个时候就该用到readine,逐行读取,也可以指定字节

Python文件操作IO open 读-取-写_python_10

Readline列子

Python文件操作IO open 读-取-写_读取写_11每次执行的话会读取一行。如果为空的话,会显示  \n

 

Python文件操作IO open 读-取-写_python_12

每次执行readline命令内容就会读取下一行,其实这个时候 指针就在起作用了,每次执行一次,指针调到下一行第一个字符。这就是readline过程

Python文件操作IO open 读-取-写_python_13选择一次读多少字节,这里为一次5字节

没有就显示\n

 

freadlines列子

Python文件操作IO open 读-取-写_读取写_14

readlines

可以直接读取多行,然后返回一个列表。

形成一个列表。每一个元素就是一行,直接通过列表方式 获取第几行数据。

Python文件操作IO open 读-取-写_读取写_15

 

小补充

Python文件操作IO open 读-取-写_python_16 这个案例是不让你产生错觉,用 read 读取后 指针会一直往下扫描。一直读取全部,。 当指针到最后,你还想往下读的话,是读不出来数据的。

      要想在看上面数据,可以用一个变量做一个赋值,保存起来。什么时候想看文件 信息,只要显示 s变量值 就可以了。

最基础的方法。其它方法也有,后面补充。

 

变量赋值案例

f 调用方法 保存到

变量c中。

Python文件操作IO open 读-取-写_读取写_17以上介绍了IO文件在读的时候,指针的作用

 

知道了怎么读,

下面要看下怎么写入数据

Write语法

Python文件操作IO open 读-取-写_python_18

Write例子

Python文件操作IO open 读-取-写_python_19

上图解有、 w效果为写入和重建。

表达含义:

1. w 写入权限 写入,此时新建一个为xq5txt文件。

2. write方法写入,内容。一共为14个字节

3.可以明确看出此时创建的文件只有写,没有读的权限

4.f变量用 r 读的方式

5.用读的权限 完美读取 新建的xq5.txt里面的内容;       

 

Writeines语法

Python文件操作IO open 读-取-写_python_20

Wwritelines例子:

Python文件操作IO open 读-取-写_文件操作_21

表达含义:

1.用写的方式,w打开文件

2.writlines 列表写入法

3.释放文件

4.读取文件

5.读取得到 写入的数据;

列表数据变成一行的数据

 

 

文件 对象 组合使用

注意下 rw 不能 组合使用

Python文件操作IO open 读-取-写_文件操作_22

所以w只可以写入,如果想 有更新作用就用一个加号。

r w a三个  组合的时候,只能用到和a的 组合!

 

w +

可以组合使用,

但是 w 的效果是每次用时,就会重建数据,

1.用w 写入 + 更新 功能 就会有写入效果

2.之前这个文件里面为时间信息,可现在碰到w了,就会重新创建一个文件,是个新的文件,所以里面什么都没有。

3.更新写入内容  =.=

4.读取数据,现在是读不到数据的,因为更新写入数据时也是指针控制。写完一个指针移动一下,等你写完之后指针就到了结尾处 ,所以读取数据时,是读不到前面的。

除非把指针移动到开口去。

Python文件操作IO open 读-取-写_python_23

 

a

含义 写入,在文件末尾追加新的内容,文件不存在,创建之

下面看下  a的效果跟 w 做一下对比。

Python文件操作IO open 读-取-写_读取写_24

表达含义:

1.用a的方法 操作打开文件

2.进行写入的操作,a是可以写入的。

3.查看文件是没有权限的

4.释放文件控制

5。用读的方式查看了 a写入的有没有生效;

6.追加信息成功,在文件末尾追加了abc

w是直接写入 重建文件

a是在文件末尾追加内容。如果没有文件就新建一个。

 

看下a+和 r+ 的区别

Python文件操作IO open 读-取-写_读取写_25
表达含义:

a+

1. xq5.txt文件进行 a末尾更新权限 +获得读的权限

2.读取的是为空的,因为指针现在在文件结尾。没有消息

3.释放文件

r+

4.进行读取更新。可读可写。

5.写入内容 hello

6.因为写入后文件为文件末尾,查看也为空,就释放文件用读的方式。

7.r 的方式对 xq5.txt文件进行操作。

8.打开感觉出现了替换的效果,用r的话,因为r的权限是读,会从文件的开头读取,+是更新,可以写入。产生了一个替换的效果。

 

 

到这里呢,对着三个模式的基本概念就明确了。

至于bU,如果要进行读取 二进制的图片 MP3这类文件或者一个程序,可以 进行 rb 进行读取。

但是读取出来的信息不是人类能搞懂的一个信息。

现在已经基本上讲解了怎么读 怎么写。

读有read readlinereadlines

写有writewritelines

了解知识点,了解IO文件的 读取 创建 写入方法。

 

补充更新1.9

介绍几个新功能

提交更新、偏移量、

FilcObject.flush()

提交更新案例

Python文件操作IO open 读-取-写_读取写_26

表达含义

1.先查看文件,

2.内容如下

3.释放内存解除文件占用

4. r+ 读取更新方式 赋值

5.写入新的内容。

 

Python文件操作IO open 读-取-写_文件操作_27

写入命令 执行后 ,文件不会立即生效,

这个时候运用 .flush(),及时更新,文件重新打开立即生效。

如果不提交更新,当你用.close之后,把文件关掉,它会自动提交更新。

Python文件操作IO open 读-取-写_python_28

 

偏移量

FileObkect.seek (偏移量,选项)

文件 对象.查找

偏移  代表你要移动几位,,选项为  位置选择字符位置0

Python文件操作IO open 读-取-写_读取写_29 

 

.seek例子

Python文件操作IO open 读-取-写_文件操作_30

文件已经读取过,选择读取,在读是读不到数据的。

因为指针,移动到了文件末尾,所以读取后面内容为空。这个时候就运用到我们的方法了。

 

 

偏移量为0,选项为0,指针移动到文章开头。

指针 从头读取得到内容。

Python文件操作IO open 读-取-写_文件操作_31

 

偏移量为1 ,选项为0,指针从头移动。移动一位。

读取得到指针移动一位后的下面内容。

Python文件操作IO open 读-取-写_文件操作_32

 

除了从开头开始移动

还有两种移动方式,

一种是表示从当前,指针所指向的位置,先后移动,选项为1

如果从文件的末尾像前移动的话,选项为2.

 

注意事项

PY3

这里是用r的方式打开的

注意纯文本的文件,不允许从当前位置,从文件末尾,先前 或者先后移动。

区别点 py3中要用 rb  二进制的方式去打开它,py2里可以直接用  r 读取的方式打开

Python文件操作IO open 读-取-写_文件操作_33

 

选项为 1 2 展示

选项1展示

Python文件操作IO open 读-取-写_python_34

选择为1的显示

1,用rb读取方式。

2.b 代表用 二进制的方式读取的,读取全部内容

3.从当前位置,读取,当前位置为末尾,向前读取4

4.得到内容 48hh

 

选项为2的显示。

Python文件操作IO open 读-取-写_读取写_35

选项为 2 的显示,

1. rb 读取二进制的方式,

2. b  代表用二进制方式读取的 ,读取全部内容

3.偏移量为-2,代表向前移动,选项2 代表从文件末尾向前移动偏移量。

4.向前移动两位得到后两位结果 hh






2018年1月6号 王宇林