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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

技术小牛人 2017-11-01 13:03:00 浏览909
展开阅读全文

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)

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

blob.png第一种情况进入我创建的文件夹选项,进入的的ipython。可直接打开文件

blob.png

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

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

 

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

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

blob.png

 

读取文件

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

基本文件操作过程

Read 语法

blob.png

选择字节数的操作

blob.png

read列子

blob.png

讲解含义

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

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

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

 

文件操作方法 和对象

blob.png

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

创建文件生成句柄

 

生成文件对象

blob.png

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

 

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

然后在看它们的区别

blob.png

 

 

介绍 readline

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

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

blob.png

Readline列子

blob.png每次执行的话会读取一行。如果为空的话,会显示  \n

 

blob.png

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

blob.png选择一次读多少字节,这里为一次5字节 

没有就显示\n

 

freadlines列子

blob.png

readlines

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

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

blob.png

 

小补充

blob.png 这个案例是不让你产生错觉,用 read 读取后 指针会一直往下扫描。一直读取全部,。 当指针到最后,你还想往下读的话,是读不出来数据的。

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

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

 

变量赋值案例

 f 调用方法 保存到

变量c中。

blob.png以上介绍了IO文件在读的时候,指针的作用

 

知道了怎么读,

下面要看下怎么写入数据

Write语法

blob.png

Write例子

blob.png

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

表达含义:

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

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

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

4.f变量用 r 读的方式

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

 

Writeines语法

blob.png

Wwritelines例子:

blob.png

表达含义:

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

2.writlines 列表写入法

3.释放文件

4.读取文件

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

列表数据变成一行的数据

 

 

文件 对象 组合使用

注意下 rw 不能 组合使用 

blob.png

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

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

 

w +

可以组合使用,

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

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

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

3.更新写入内容  =.=

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

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

blob.png

 

a

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

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

blob.png

表达含义:

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

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

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

4.释放文件控制

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

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

w是直接写入 重建文件

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

 

看下a+和 r+ 的区别

blob.png
表达含义:

a+

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

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

3.释放文件

r+

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

5.写入内容 hello

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

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

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

 

 

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

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

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

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

读有read readlinereadlines

写有writewritelines

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

 

补充更新1.9

介绍几个新功能

提交更新、偏移量、

FilcObject.flush()

提交更新案例

blob.png

表达含义

1.先查看文件,

2.内容如下

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

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

5.写入新的内容。

 

blob.png

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

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

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

blob.png

 

偏移量

FileObkect.seek (偏移量,选项)

文件 对象.查找

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

blob.png 

 

.seek例子

blob.png

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

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

 

 

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

指针 从头读取得到内容。

blob.png

 

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

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

blob.png

 

除了从开头开始移动

还有两种移动方式,

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

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

 

注意事项

PY3

这里是用r的方式打开的

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

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

blob.png

 

选项为 1  2 展示

选项1展示

blob.png

选择为1的显示

1,用rb读取方式。

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

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

4.得到内容 48hh

 

选项为2的显示。

blob.png

选项为 2 的显示,

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

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

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

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






1
2018年1月6号 王宇林

 

本文转自 新网学会51CTO博客,原文链接:http://blog.51cto.com/xwxhvip/2058006 ,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小牛人
+ 关注