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

[经验分享] 13. Python 文件操作

[复制链接]

尚未签到

发表于 2018-8-9 13:12:04 | 显示全部楼层 |阅读模式
  1.      简单的读取文件内容(codecs的使用)
  当前目录下有个1.txt的文档
  打开文件的步骤:
  import codecs
  (1)open文件
  f = codecs.open('1.txt')
  (2)文件操作(读或写)
  print (f.read())
  (3)关闭文件
  f.close()
  结果如下:
DSC0000.png

  这个方法等于把整个文件拿出来,当成一个字符串来使用,后期用正则匹配的时候,非常方便、适用。
  【codecs 这个模块,是open打开文件的时候,引入这个模块,用途:解决文件乱码的。推荐以后在读写的时候使用这个模块】
  如果设:
  text = f.read()
  查看text的类型:
  print (type(text))
  查看到类型是"str"(字符串)
  类型是字符串,我们就可以使用字符串的方法:
  result = text.replace('1', 'A')
  print (result)
  2.      写入一个新的文件
  import codecs
  f = codecs.open('2.txt', 'w')
  f.write('hello world!\n')
  f.write('hello {0}!\n'.format('LLN'))
  f.write('you cool!\n')
  f.write('I like it!\n')
  f.close()
  注释:
  # open(filename, mode)
  # mode有几个参数:
  r读取
  w写入
  b二进制
  a追加
  3.     文件操作常用用法
  readlins() 方法:
  此方法,读取文件,把每一行都变成单独的字符串,并放入到一个列表中去,第一行为列表的第一个元素,以此类推。
  举例:
  import codecs
  f = codecs.open('1.txt', 'rb')
  t_list = f.readlines()
  print (t_list[0]
  print (f.readlines())
  f.close()
  返回结果:
  1111111111第一行
  []
  注释:
  为什么 print (f.readlines()) 会返回空列表?
  因为之前readlines()已经将文件读到末尾了,下次再用readlines()方法读的时候,会从文章最末尾开始读取,所以结果为[]。
  readline() 方法:
  此方法,读取文件,每一个readline()只读取一行,光标会停留在下一行的开头;
  在执行下一个readline()的时候,会从光标处读取当前这一行。
  import codecs
  f = codecs.open('1.txt', 'rb')
  print (f.readline())
  print (f.readline())
  print (f.readline())
  print (f.readline())
  print (f.readline())
  f.close()
  返回结果:
  1111111111
  aaaaaaaaaa
  2222222222
  bbbbbbbbbb
  3333333333
  next()方法:
  对比:
  readline() 读取文件一行内容,返回一个字符串
  next() 读取文件下一行内容返回一个字符串
  write()方法和writelines()方法:
  write() 必须传入一个(整个)字符串
  writelines() 必须传入一个序列
  举例1:
  import codecs
  f = codecs.open('2.txt', 'wb')
  f.write('hello lili\n cccccccc\n aaaaaaaaaa\n')  ## 一个整的字符串
  f.close()
  可以看到多出来一个文件:
DSC0001.png

  文件内容:
DSC0002.png

  举例2:
  import codecs
  f = codecs.open('2.txt', 'wb')
  f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc']) ##传入一个列表(序列)
  f.close()
  可以看到多出来一个文件的内容:
DSC0003.png

  tell()方法:
  提示当前光标落在哪个字符位置上
  举例:
  import codecs
  f = codecs.open('3.txt', 'wb')
  f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc'])
  print f.tell()
  f.close()
  返回:
  23
  seek()方法:
  指定光标的位置,seek(0)是移动到文章开头
  举例:
  import codecs
  f = codecs.open('3.txt', 'wb')
  f.writelines(['aaaaaaaaaaaaaaa\n','bbbbbbbbbbbbb\n','cccccccc\n'])
  print f.tell()
  f.seek(0)
  f.write('sssssssssssssssss')##重新写入
  f.close()
  返回结果:
  sssssssssssssssssbbbbbbbbbbbb
  cccccccc
  从结果看出,将光标移动到开头后,并在开头写入字符串,并替换掉原有字符串对应的位置的字符,文件总长度不变。
  4.with的特殊用法
  举例:
  import codecs
  with codecs.open('1.txt', 'rb') as f:
  print (f.read())
  这种方法不需要写close(),在执行完成后,会自动关闭文件。
  拓展:
  打印文件指定行的内容:
  方法一:
  import codecs
  with codecs.open('1.txt', 'rb') as f:
  for line, value in enumerate(f):
  if line == 4-1:#打印第四行的内容,下标为3
  print (value)
  方法二:(python有个自带的方法)
  import linecache
  count = linecache.getline(filename,linenum)
  举例:
  import linecache
  count = linecache.getline('1.txt',4)   ##下标为3
  print count

运维网声明 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-549218-1-1.html 上篇帖子: Python数据库编程 下篇帖子: 【python深入2】socket编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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