设为首页 收藏本站
查看: 1728|回复: 0

[经验分享] Python文件操作IO open 读-取-写

[复制链接]
发表于 2018-8-5 09:17:51 | 显示全部楼层 |阅读模式
  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)
  方法 =  确定文件在什么地方,(在什么路径,用读取还是写入方式打开。)
DSC0000.jpg 第一种情况进入我创建的文件夹选项,进入的的ipython。可直接打开文件

DSC0001.jpg

  返回的提示表达:方式是 r 打开 编码格式是CP936
  此时获得并不是文件的内容,只是一个文件获得的一个句柄,或者理解为对象。
  
  第二张情况 因为执行的文件环境是同一个目录下,只需要执行文件的名字。
  如果不是一个文件目录,需要r文件 指定目录 写上完整路径
DSC0002.jpg

  
  读取文件
  注意: 进行读取文件,可以后面方法写上'r' ,也可以不加 ,因为程序默认的就是为'r'的参数
  基本文件操作过程
  Read 语法
DSC0003.jpg

  选择字节数的操作
DSC0004.jpg

  read列子
DSC0005.jpg

  讲解含义
  1 先生成一个对象。然后通过对象的方法。《某对象 = 方法》
  2 选择是对文件进行读取信息,还是写入信息。《f.read() = 对象 ,阅读》,读到信息
  3 操作完毕后对象 文件关闭 ,主要是为了释放内存。《对象.close()》
  
  文件操作方法 和对象
DSC0006.jpg

  可以组合使用,比如  r+ 就有读取的作用、rb读取一个二进制文件。
  创建文件生成句柄
  生成文件对象
DSC0007.jpg

  创建文件句柄,生成文件对象的时候,是读是写还是追加去写。
  
  基本上功能如下图,唯一的区别还是有一点的,先了解下怎么样读取和写入,
  然后在看它们的区别
DSC0008.jpg

  
  
  介绍 readline
  之前用的read,它是读取全部的内容,
  但是有的时候,内容有很多行,每一次只想读取一行,这个时候就该用到readine,逐行读取,也可以指定字节
DSC0009.jpg

  Readline列子
DSC00010.jpg 每次执行的话会读取一行。如果为空的话,会显示  \n

  
DSC00011.jpg

  每次执行readline命令内容就会读取下一行,其实这个时候 指针就在起作用了,每次执行一次,指针调到下一行第一个字符。这就是readline过程
DSC00012.jpg 选择一次读多少字节,这里为一次5字节

  没有就显示\n
  
  freadlines列子
DSC00013.jpg

  readlines
  可以直接读取多行,然后返回一个列表。
  形成一个列表。每一个元素就是一行,直接通过列表方式 获取第几行数据。
DSC00014.jpg

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

  要想在看上面数据,可以用一个变量做一个赋值,保存起来。什么时候想看文件信息,只要显示s变量值就可以了。
  最基础的方法。其它方法也有,后面补充。
  
  变量赋值案例
  f 调用方法保存到
  变量c中。
DSC00016.jpg 以上介绍了IO文件在读的时候,指针的作用

  
  知道了怎么读,
  下面要看下怎么写入数据
  Write语法
DSC00017.jpg

  Write例子
DSC00018.jpg

  上图解有、 w效果为写入和重建。
  表达含义:
  1.用 w 写入权限 写入,此时新建一个为xq5txt文件。
  2.用 write方法写入,内容。一共为14个字节
  3.可以明确看出此时创建的文件只有写,没有读的权限
  4.f变量用 r 读的方式
  5.用读的权限 完美读取 新建的xq5.txt里面的内容;        
  
  Writeines语法
DSC00019.jpg

  Wwritelines例子:
DSC00020.jpg

  表达含义:
  1.用写的方式,w打开文件
  2.用writlines 列表写入法
  3.释放文件
  4.读取文件
  5.读取得到 写入的数据;
  列表数据变成一行的数据
  
  
  文件对象组合使用
  注意下 rw 不能 组合使用
DSC00021.jpg

  所以w只可以写入,如果想 有更新作用就用一个加号。
  r w a三个  组合的时候,只能用到和a的 组合!
  
  w +
  可以组合使用,
  但是 w 的效果是每次用时,就会重建数据,
  1.用w 写入 + 更新 功能 就会有写入效果
  2.之前这个文件里面为时间信息,可现在碰到w了,就会重新创建一个文件,是个新的文件,所以里面什么都没有。
  3.更新写入内容  =.=
  4.读取数据,现在是读不到数据的,因为更新写入数据时也是指针控制。写完一个指针移动一下,等你写完之后指针就到了结尾处 ,所以读取数据时,是读不到前面的。
  除非把指针移动到开口去。
DSC00022.jpg

  a
  含义 写入,在文件末尾追加新的内容,文件不存在,创建之
  下面看下  a的效果跟 w 做一下对比。
DSC00023.jpg

  表达含义:
  1.用a的方法 操作打开文件
  2.进行写入的操作,a是可以写入的。
  3.查看文件是没有权限的
  4.释放文件控制
  5。用读的方式查看了 a写入的有没有生效;
  6.追加信息成功,在文件末尾追加了abc
  w是直接写入 重建文件
  a是在文件末尾追加内容。如果没有文件就新建一个。
  看下a+和 r+ 的区别
DSC00024.jpg

  表达含义:
  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()
  提交更新案例
DSC00025.jpg

  表达含义
  1.先查看文件,
  2.内容如下
  3.释放内存解除文件占用
  4.r+ 读取更新方式赋值
  5.写入新的内容。
  
DSC00026.jpg

  写入命令执行后,文件不会立即生效,
  这个时候运用.flush(),及时更新,文件重新打开立即生效。
  如果不提交更新,当你用.close之后,把文件关掉,它会自动提交更新。
DSC00027.jpg

  
  偏移量
  FileObkect.seek (偏移量,选项)
  文件对象.查找
  偏移代表你要移动几位,,选项为位置选择字符位置0
DSC00028.jpg

  
  .seek例子
DSC00029.jpg

  文件已经读取过,选择读取,在读是读不到数据的。
  因为指针,移动到了文件末尾,所以读取后面内容为空。这个时候就运用到我们的方法了。
  
  
  偏移量为0,选项为0,指针移动到文章开头。
  指针从头读取得到内容。
DSC00030.jpg

  
  偏移量为1 ,选项为0,指针从头移动。移动一位。
  读取得到指针移动一位后的下面内容。
DSC00031.jpg

  
  除了从开头开始移动
  还有两种移动方式,
  一种是表示从当前,指针所指向的位置,先后移动,选项为1
  如果从文件的末尾像前移动的话,选项为2.
  
  注意事项
  PY3
  这里是用r的方式打开的
  注意纯文本的文件,不允许从当前位置,从文件末尾,先前或者先后移动。
  区别点py3中要用rb  二进制的方式去打开它,py2里可以直接用r 读取的方式打开
DSC00032.jpg

  
  选项为1 2展示
  选项1展示
DSC00033.jpg

  选择为1的显示
  1,用rb读取方式。
  2.b 代表用二进制的方式读取的,读取全部内容
  3.从当前位置,读取,当前位置为末尾,向前读取4
  4.得到内容48hh
  
  选项为2的显示。
DSC00034.jpg

  选项为2 的显示,
  1.rb 读取二进制的方式,
  2. b  代表用二进制方式读取的,读取全部内容
  3.偏移量为-2,代表向前移动,选项2 代表从文件末尾向前移动偏移量。
  4.向前移动两位得到后两位结果 hh
  
  
  
2018年1月6号 王宇林  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-546787-1-1.html 上篇帖子: python模拟选课系统 下篇帖子: Python django学习之:model (与数据库操作)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表