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

[经验分享] 【13】Python之常用文件操作

[复制链接]

尚未签到

发表于 2018-8-4 14:01:43 | 显示全部楼层 |阅读模式
  File对象使用open函数来创建,下表列出file对象常用的函数。
  序号
  方法
  描述
  1
  file.close()
  关闭文件。关闭文件后不能在进行读写。注:文件打开后别忘记关闭。
  2
  file.flush()
  刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待缓冲区的写入。(缓冲区好比PC机的内存)
  3
  file.fileno()
  返回一个整型的文件描述(file descriptor FD整型),可以用在如OS模块的read方法等一些底层操作上
  4
  file.isatty()
  如果文件连接到一个终端上返回True,否则False
  5
  file.next()
  返回文件下一行
  6
  file.read([size])
  从文件读取指定的字节数,如果未给定或为负则读取所有。
  7
  file.readline([size])
  读取整行,包括\n字符
  8
  file.readlines([sizeint])
  读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行,实际读取值肯能比sizeint较大,因为需要填充缓冲区
  9
  file.seek(offset[, whence])
  设置文件当前位置
  10
  file.tell()
  返回文件当前位置
  11
  file.truncate([size])
  从文件的首行首字符开始截断,截断文件为size个字符,五size表示从当前位置截断;截断之后V后面的所有字符被删除,其中Windows系统下的换行代表2个字符大小。
  12
  file.write(str)
  将字符串写入文件,没有返回值。
  13
  file.writelines(sequence)
  向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
  file.close()
  概述:关闭文件。关闭文件后不能在进行读写。注:文件打开后别忘记关闭。
  f=open('so_file',encoding="utf-8")  #打开文件,并读取。Windows上默认字符集GDK,所以这里指定了字符集,不然会报错。(#UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 106: illegal multibyte sequence
  data=f.read()  #将读取的内容赋值给data
  print(data)
  f.close()  #一定要关闭,才是一个完成的读取文件方式。
  打开文件的模式有:

  •   r,只读模式(默认)。
  •   w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  •   a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
  "+" 表示可以同时读写某个文件

  •   r+,可读写文件。【可读;可写;可追加】
  •   w+,写读
  •   a+,同a
  "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  •   rU
  •   r+U
  "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  •   rb
  •   wb
  •   ab
      File.flush()
      概述:用来刷新缓冲区的,即将缓冲区的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
      一般情况下文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新她,这时就可以使用flush方法。
  f=open('so_file','wb')  #打开文件,并读取。
  # data=f.read()  #将读取的内容赋值给data
  # print(data)
  print("file name is :",f.name)
  f2=f.flush()
  # print(f2)
  f.close()
  运行结果:
  file name is : so_file
  注意:二进制模式下,不支持编码参数
  缓冲flush作用效果图:(执行有惊喜)
  import sys,time
  f=open('so_file','r+',encoding="utf-8")
  for i in range(20):
  sys.stdout.write("#")
  sys.stdout.flush()
  time.sleep(0.1)
  运行结果:
  ####################
  File.fileno()
  概述:返回一个整型的文件描述(file descriptor FD整型),可以用在如OS模块的read方法等一些底层操作上
  f=open('so_file','wb')  #打开文件,并读取。
  # data=f.read()  #将读取的内容赋值给data
  # print(data)
  print("file name is :",f.name)
  # f2=f.flush()
  fidd=f.fileno()
  print("file》》》",fidd)  #返回文件描述符
  f.close()
  运行结果:
  file name is : so_file
  file》》》 3
  File.isatty()
  概述:如果文件连接到一个终端上返回True,否则False
  f=open('so_file','wb')  #打开文件,并读取。
  # data=f.read()  #将读取的内容赋值给data
  # print(data)
  print("file name is :",f.name)
  fin=f.isatty()
  print("file》》》",fin)
  f.close()
  运行结果:
  file name is : so_file
  file》》》 False
  File.readline()
  概述:读取整行,包括\n字符
  f=open('so_file','r+',encoding="utf-8")
  print("file name is :",f.name)
  # for index in range(5):
  #     line = next(fo)
  #     print ("第 %d 行 - %s" % (index, line))
  data=f.readline() #不填默认读取一行
  print("读取首行:",data)
  data1=f.readline(5)  #读取N个字符
  print("读取%s个字符" %(data1),data1)
  f.close()
  运行结果:
  file name is : so_file
  读取首行: Somehow, it seems the love I knew was always the most destructive kind
  读取Yeste个字符 Yeste
  File.readlines()
  概述:用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。 如果碰到结束符 EOF 则返回空字符串。
  如果碰到结束符 EOF 则返回空字符串。
  f=open('so_file','r+',encoding="utf-8")
  print("file name is :",f.name)
  data=f.readlines()  #全部打印结尾加\n
  print(data)
  f.close()
  第十行不打印
  f=open('so_file','r+',encoding="utf-8")
  for index,info in enumerate(f.readlines()):
  if index==9:
  print('--------GO-------')
  continue
  print(info.strip())
  f.close()
  高效的循环方法:
  f=open('so_file','r+',encoding="utf-8")
  count=0
  for line in f:
  if count==9:
  print('---------GO--------')
  count +=1
  continue
  print(line)
  count +=1
  File.tell()
  概述:反馈文件当前位置,即文件指针当前位置
  f=open('so_file','r+',encoding="utf-8")
  data=f.readline()
  print("读取数据为:%s"%(data))
  data2=f.tell()
  print("当前位置:%s" %(data2))
  运行结果:
  读取数据为:Somehow, it seems the love I knew was always the most destructive kind
  当前位置:72  #read结束,全文72行
  File.seek()
  概述:指针移动到之指定位置
  File.truncate()

  概述:用于从文件的首行首字符开始截断,截断文件为>  .truncate()什么都不写,清空文件。指定数字就会截断个数。
  File.write()
  修改部分值,写入新文件。
  f=open('so_file','r',encoding="utf-8")
  f_new=open('so_file2','w',encoding="utf-8")
  for line in f:
  if "生命的滋味是甜的" in line:
  line=line.replace("生命的滋味是甜的","生命的滋味是幸福的")
  f_new.write(line)
  f.close()
  f_new.close()
  运行结果:
  So_file文件内容
  Somehow, it seems the love I knew was always the most destructive kind
  不知为何,我经历的爱情总是最具毁灭性的的那种
  Yesterday when I was young
  昨日当我年少轻狂
  The taste of life was sweet
  生命的滋味是甜的
  As rain upon my tongue
  就如舌尖上的雨露
  I teased at life as if it were a foolish game
  我戏弄生命 视其为愚蠢的游戏
  The way the evening breeze
  就如夜晚的微风
  May tease the candle flame
  So_file2文件内容(新文件)
  Somehow, it seems the love I knew was always the most destructive kind
  不知为何,我经历的爱情总是最具毁灭性的的那种
  Yesterday when I was young
  昨日当我年少轻狂
  The taste of life was sweet
  生命的滋味是幸福的
  As rain upon my tongue
  就如舌尖上的雨露
  I teased at life as if it were a foolish game
  我戏弄生命 视其为愚蠢的游戏
  The way the evening breeze
  就如夜晚的微风
  May tease the candle flame

运维网声明 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-546552-1-1.html 上篇帖子: python模块之configparser 下篇帖子: python通用论坛正文提取\python论坛评论提取\python论坛用户信息提取
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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