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

[经验分享] Python12 文件操作

[复制链接]

尚未签到

发表于 2018-8-9 10:49:04 | 显示全部楼层 |阅读模式
文件操作
DSC0000.png

  Pycharm使用UTF-8格式,而Windows默认是GBK格式,所以默认pycharm是处理不了BGK格式的,所以要要定义使用UTF-8格式打开Windows文件的内容。
  .read():读取文件所有内容。
DSC0001.png

DSC0002.png

  同样是读取文件内容,但是print(data2)时没有任何数据显示,这是因为data1读取完成的时候,光标位置处于test.txt文档中的最下面,所以当data2再去读取时,下面已经没有数据了。
1.读写
DSC0003.png

DSC0004.png

  报错没有写入的权限。
DSC0005.png

  使用’r’赋予只读权限,不写的话默认就是只读。
DSC0006.png

  因为是只读所以不能写入
DSC0007.png

  将其赋予写入权限
DSC0008.png

  可以看到只能写入,却不能读取(代码中有读取的动作)。
DSC0009.png

DSC00010.png

  可以看到test文档已经被写入内容了,但是内容却都写在了同一行。
DSC00011.png

  \n表示换行符
  f.close(),写入内容后需要关闭文档,关闭后自动保存。
DSC00012.png

  注意’w’权限会覆盖之前有的内容。
DSC00013.png

DSC00014.png

  可以看到文档中直接了内容,并不会覆盖。
DSC00015.png

  每一行定义一个数字
DSC00016.png

DSC00017.png

  读取了多行的内容,但是这样写的代码太多,可以使用循环替代重复代码
DSC00018.png

2.readlines
DSC00019.png

DSC00020.png

  可以看到以列表的形式,将每一行的列表元素在同一行打印出来。
DSC00021.png

DSC00022.png

  将列表的每一个元素分行打印出来,但是可以看到打印的时候将\n也打印出来了,所以显示的时候会有空行。
DSC00023.png

DSC00024.png

  可以看到,通过strip分隔了空行(也就是删除,因为括号中是空格所以删除所有空格,如果是其他字符就删除对应的所有字符),显示就正常了。
DSC00025.png

DSC00026.png


  • readlines的缺点  Readlines会读取文件的所有内容,并将读取的内容放入到内存中,读取的文件小的话内存是可以接受的,但是如果读取的文件过大,超过了内存的大小就不可以了(比如内存8G,你的文件有20G)。
    DSC00027.png

  解决方法就是直接使用for循环就可以了
  这种方式就是读取一行后,打印一行,在打印下一行前会把之前打印的内容在内存中删除,这样内存中就始终保存一行的内容,不会占据过大内存。
  内存只保存一行是因为f打开的文件编程了一个叫迭代器的东西,迭代器后面会讲。
  不使用readlines读取,显示的内容就不在会是列表了,也就无法将文档中的下标读取出来了,就没办法在通过匹配下标的方式去针对达到指定行进行操作了。
  可以通过使用计数器来判断读取文档到多少行了。
DSC00028.png

DSC00029.png

  ### 3.文件修改
DSC00030.png

  F_1是旧文件
  F_2是新文件
  要求:通过读取旧文件的指定内容,将其修改并写入新的文件中;如果没有读取到指定内容,也将新内容写入到新文件中。
  代码含义:如果发现小明要去玩内容在文件中,就通过replace替换关键字;如果没有发现指定内容,根据else代码直接写入新文件中。
  但是此代码中可以看到,出现了重复代码f_2.write(line)
DSC00031.png

  只需要将缩进等级调整一下,如果发现指定内容就进行替换,之后会将替换内容写入到新文件。
  即使没有发现指定内容,那么就不需要他换,直接将循环到旧文件的内容写入到新文件。
DSC00032.png

  也可以将要查找和替换的信息赋值变量,然后用变量名称来代替。
4.with语句
DSC00033.png

  使用with语句可以在该语句模块最后不适用close来关闭文件,因为with语句最后会自动关闭;
  这里的as f,相当于f = open…….
DSC00034.png

DSC00035.png

  可以通过with同时打开多个文件;
  从代码中可以看出是分了多行来打开多个文件,其实也可以在同一行来打开,只不过python官网的开发规范说明了一行的开发代码不应该超过80个字符,当同时打开多个文件时,可能就超过了限制的80个字符,所以这里我们没打开一个文件就换一行来写代码。
总结
  r只读
  w只写(覆盖)
  a追加(最后一行)
  r+读写(读后可以写,如果是写就是追加到最后一行)
  w+写读(覆盖后可以读)
  a+追加写读
  rb使用二进制模式打开(打开的数据都是bytes格式)
  wb通过bytes的格式写入,如果使用过wb必须制定字符集(如:encoding='utf-8'),当夸系统平台时会用到二进制数据。
  ab用二进制追加
  seek:重置读取的下标位置到最顶
  tell:查看当前下标的位置
  truncate():截断剩下的字符串(剩下也就是还没读取的),默认截断后面所有,括号中指定数字就是指定多少个字符。
  flush():一般文件需要关闭后才换刷新缓冲区将内容写入文件,但是用flush后不需要等文件关闭,直接指定缓冲,将内容写入文件
  文件还有很多其他方法:
DSC00036.png

运维网声明 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.yunweiku.com/thread-549062-1-1.html 上篇帖子: python 函数3 下篇帖子: Python09 字典
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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