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

[经验分享] python3_05.文件操作那些事

[复制链接]

尚未签到

发表于 2018-8-16 07:54:08 | 显示全部楼层 |阅读模式
  文件操作的学习笔记。
  >>> file = open('/tmp/test.txt','r')
  >>> file.read()
  'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n'
  >>> file.close()  #文件使用完以后要关闭文件,因为文件会占用资源
  >>> with open('/tmp/test.txt','r') as f:
  ...     print(f.read())
  ...    #with语句自动调用了close方法
  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin
  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  sync:x:5:0:sync:/sbin:/bin/sync
  mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
  read() 一次性读取所有内容,文件过大,内存容易出问题

  read(size)>  readline()  每次读取一行
  如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
  #f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore', newline='')
  open可以传入一些参数:
  encoding:指定编码
  errors:处理错误的方式,最简单的是ignore忽略,但是这样用多了不太好。
  newline='':Python可以识别所有的普通换行符并将其转换为单个 \n 字符。 类似的,在输出时会将换行符 \n 转换为系统默认的换行符。 如果你不希望这种默认的处理方式,可以给 open() 函数传入参数 newline=''
  >>> with open('/tmp/hello.txt','w') as f:
  ...     f.write('hello')              #文件写入
  ...     print('你好',file=f)   #print输入重定向到文件中
  ...
  >>> file.read()
  'hello你好\n'
  #-- 文件基本操作
  output = open(r'C:\spam', 'w')          # 打开输出文件,用于写
  input = open('data', 'r')               # 打开输入文件,用于读。打开的方式可以为'w', 'r', 'a', 'wb', 'rb', 'ab'等

  fp.read([size])                         #>  fp.readline([size])                     # 读一行,如果定义了size,有可能返回的只是一行的一部分
  fp.readlines([size])                    # 把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长。
  fp.readable()                           # 是否可读
  fp.write(str)                           # 把str写到文件中,write()并不会在str后加上一个换行符
  fp.writelines(seq)                      # 把seq的内容全部写到文件中(多行一次性写入)
  fp.writeable()                          # 是否可写
  fp.close()                              # 关闭文件。
  fp.flush()                              # 把缓冲区的内容写入硬盘
  fp.fileno()                             # 返回一个长整型的”文件标签“
  fp.isatty()                             # 文件是否是一个终端设备文件(unix系统中的)
  fp.tell()                               # 返回文件操作标记的当前位置,以文件的开头为原点
  fp.next()                               # 返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
  fp.seek(offset[,whence])                # 将文件打操作标记移到offset的位置。whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。
  fp.seekable()                           # 是否可以seek
  fp.truncate([size])                     # 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。
  for line in open('data'):
  print(line)                       # 使用for语句,比较适用于打开比较大的文件
  open('f.txt', encoding = 'latin-1')     # Python3.x Unicode文本文件

运维网声明 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-552401-1-1.html 上篇帖子: Cent OS6.7编译安装python2.7 下篇帖子: python4-反射_类
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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