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

[经验分享] Python open()用法

[复制链接]

尚未签到

发表于 2019-1-27 07:17:28 | 显示全部楼层 |阅读模式
  1. open()语法
  open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
  open函数有很多的参数,常用的是file,mode和encoding
  file文件位置,需要加引号
  mode文件打开模式,见下面3
  buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
  encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
  errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
  newline可以取的值有None, \n,  \r, ”, ‘\r\n’,用于区分换行符,但是这个参数只对文本模式有效;
  closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。
  2. Python中file()与open()区别
  两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open
  3. 参数mode的基本取值
CharacterMeaning‘r’open for reading (default)‘w’open for writing, truncating the file first‘a’open for writing, appending to the end of the file if it exists‘b’binary mode‘t’text mode (default)‘+’open a disk file for updating (reading and writing)‘U’universal newline mode (for backwards compatibility; should not be used in new code)  r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
  b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、
  常见的mode取值组合
r或rt  默认模式,文本模式读rb     二进制文件  
w或wt 文本模式写,打开前文件存储被清空wb    二进制写,文件存储同样被清空
  
a   追加模式,只能写在文件末尾a+  可读写模式,写只能写在文件末尾
  
w+ 可读写,与a+的区别是要清空文件内容r+ 可读写,与a+的区别是可以写到文件任何位置
  4. 测试
  测试文件test.txt,内容如下:
Hello,Pythonwww.linuxeye.comThis is a test file  用一小段代码来测试写入文件直观的显示它们的不同
test = [ "test1\n", "test2\n", "test3\n" ]f = open("test.txt", "a+")try:  
  #f.seek(0)
  
  for l in test:
  
    f.write(l)finally:
  
  f.close()
  a+、w+和r+模式的区别(测试后还原test.txt)
  a+模式
# cat test.txtHello, Pythonwww.linuxeye.comThis is a test file  
test1
  
test2
  
test3
  w+模式
# cat test.txttest1  
test2
  
test3
  r+模式
  在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)
# cat test.txttest1  
test2
  
test3
  
inuxeye.comThis is a test file
  注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r’模式也如此
  其他测试
>>> f = open('test.txt')>>> f.read() #读取整个文件,字符串显示'Hello,Python\nwww.linuxeye.com\nThis is a test file\n'>>> f.read() #指针在文件末尾,不能再读取内容''>>> f = open('test.txt')>>> f.readline() #一次读一行,指针在该行末尾'Hello,Python\n'>>> f.tell() #改行的字符长度13>>> f.readline()'www.linuxeye.com\n'>>> f.tell()30>>> f.readline()'This is a test file\n'>>> f.tell()50>>> f.readline()''>>> f.tell() #指针停在最后一行50>>> f = open('test.txt')>>> f.readlines() #读取整个文件,以列表显示['Hello,Python\n', 'www.linuxeye.com\n', 'This is a test file\n']>>> f.tell() #指针在最后一行50>>> f = open('test.txt','w') #覆盖创建新文件>>> f.write('Hello,Python!')  #如果写入内容小于1024,会存在内存,否则需要刷新>>> f.flush() #写入到硬盘>>> f.close() #关闭文件会自动刷新>>> f.write('Hello,Linuxeye') #关闭后,写失败,提示文件已经关闭Traceback (most recent call last):  
  File "", line 1, in ValueError: I/O operation on closed file
  原文链接: https://blog.linuxeye.com/365.html



运维网声明 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-667999-1-1.html 上篇帖子: Some webs of the open resource 下篇帖子: Fail Open Hav
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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