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

[经验分享] 学习python对文本文档的操作

[复制链接]

尚未签到

发表于 2018-8-15 07:30:46 | 显示全部楼层 |阅读模式
  目的:使用python中的open函数对文本文档进行读写,即用python怎么读写txt。
  环境:Python 3.5.2   Python 2.7.12   Ubuntu 16
  函数:
  open(filename, 'value')
  第一个参数filename:
  这里filename是文件名称,不推荐在第一个参数上直接写'路径/文件',最好用变量代替,如果一定要直接写路径,请写在引号内open('c:\\windows\\log.txt'),在window中路径用\\分割。
  第二个参数
  说第二个参数前要明白一个概念,seek指针,即指出开始操作的位置。
  r   可读,不可写,指针在首部,文件不存在时打开报错,不填则默认为'r',open(filename) 等同于 open(filename, 'r')。
  r+  可读,可写,指针在首部,文件不存在时打开报错
  w  不可读,可写,指针在首部,创建一个新的空白文件,已经存在则覆盖。
  w+ 可读,可写,指针在首部,创建一个新的空白文件,已经存在则覆盖。
  a   不可读,可写,指针在尾部,原有的内容后面追加文本,文件不存在创建新的空白文件。
  a+ 可读,可写,指针在尾部,原有内容后面追加文本,文件不存在则创建新的空白文件。
  b   附加参数,以二进制形式操作,不可单独使用。
  U  附加参数,替换换行符为\n。
  以上参数可以组合使用,如:rb, wb, rb+等。
  需要注意的是:这里所有的写都是覆盖写,不是插入写,如r+默认会从首部开始覆盖写入,已经存在的内容会被覆盖,文件的读取和写入都会改变指针的位置。
  指针
  这个要重点说明,指针意思就是指出开始操作的位置,读写都会改变指针的位置,如w+写完再读返回空,因为写完后指针在尾部,读取是自动从指针处开始。
  seek(int, [int])
  设定指针偏移量,第一个参数是偏移的值(整数),正数向右,负数向左,第二个参数可选,默认是0,表示相对内容首部,为1则是相对当前位置,为2表示相对尾部。
  seek(0)等同于seek(0, 0)意思是相对于内容首部偏移0。
  这里注意:python 2.x 可直接用seek的第二个参数,python 3.x则必须以附加'b'参数打开才能用。
  tell()   获取当前指针的位置。
  说明先设定上下文:
  test.txt文件内容:
This is a test of Ricky.  
The second line.
  
The third line.
  python部分:
file = open(filename, 'r+')  
file.tell() # 返回当前指针位置为0。
  
file.seek(8)  # 设定指针位置相对首部偏移8
  
file.readline() # 返回字符串'a test of Rciky.',指针位置到了25,在第二行行首。
  
file.write('changed') # 从第二行写入字符串'changed',第二行变成'changedond line.'
  
ff.close()
  可以发现,执行的是覆盖写入,且指针的位置会变化,所以w+先写后读返回空白。
  下面演示文件的读写:
#以写操作打开文件filename,存在则覆盖,不存在则建立(说白了就是不管文件在不在,这里会有一个空白文件)  
f = open(filename,'w')
  
#执行写操作,写入内容是this is a test.
  
f.write('this is a test.')
  
#再次以读操作打开文件filename,这里没有加参数则默认添加了‘r’的操作
  
f = open(filename)
  
#输出读取的内容
  
print f.readline()
  
#最后一定要关闭文件。
  
f.close()
  文件的读操作有read() 、readline()和readlines():
  read(): 一次性读取文本为字符串到内存中,不会逐行处理;
  readline():每次读取一行文本为字符串到内存;
  readlines():一次性读取文本为列表到内存,速度快于readline().
  对于文件的大小和内存问题,根据自己的实际情况选择处理。
  文件的写操作有write()和writelines():
  write(str): 这个接受一个字符串对象
  writelines(list): 这个接受一个可迭代对象,如一个列表,但当列表内嵌套列表则返回错误。
  这里推荐用with方法打开文件,即使发生错误,也会在结尾自动关闭文件。
with open(filename, 'w') as file_text:  
    file_text.write('this is second test!')
  
    #这样这个块就不需要执行文件close()

运维网声明 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.iyunv.com/thread-551898-1-1.html 上篇帖子: python3 requests 抓取乱码问题 下篇帖子: Python操作mysql之插入数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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