最近由于工作原因,开始学习python的开发,遇到了一点文件操作的问题,探究一下open函数的使用。

一、open()的函数原型
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
从官方文档中我们可以看到open函数有很多的参数,我们常用的是file,mode和encoding,对于其它的几个参数,平时不常用,也简单介绍一下。
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内核的系统中,打开一个文件,便会返回一个文件描述符。
二、file() 与open()
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,在我看来,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作。
三、参数Mode的基本取值
r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、
四、 常见的mode取值组合
1、r或rt    默认模式,文本模式读
2、rb      二进制文件
3、w或wt    文本模式写,打开前文件存储被清空
4、wb    二进制写,文件存储同样被清空
5、a   追加模式,只能写在文件末尾
6、a+  可读写模式,写只能写在文件末尾
7、w+ 可读写,与a+的区别是要清空文件内容
8、r+   可读写,与a+的区别是可以写到文件任何位置

五、几个模式的区别
为了测试不同模式的区别,我们用一小段代码来测试写入文件中的直观不同。
test = [ "test1\n", "test2\n", "test3\n" ]f = open( "b.txt", "a+")try:for s in test:f.write( s )finally:f.close()

(1)a+与w+模式的区别

(2)a+与r+模式
在写入文件前,我们在上面那段代码中加上一句 seek(6),用来定位写入文件写入位置。
注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r’模式也如此
六、换行符带来的烦恼
当你用二进制模式将带有换行符的字符串写入txt文件时,数据存储是正确的,但是当用windows平台的记事本程序打开时,你看到的换行符确实一个个的小黑块,但是,用文本模式,就不存在这样的问题。
在这里,涉及到了不同平台由于编码的问题,而对换行符有不同的识别。unix或者linux系统识别\n为换行符的标识,但是windows平台的编码,对\n不予理睬。
但是python自身带有转化功能,用文本模式的时候,你不会看到由于平台不同而造成的换行效果不同,但是,二进制模式的时候,python便不会再去转化,是什么,就写进去什么,此时的换行符,再用文本模式打开,windows下就不识别‘\n’换行符了。
七、参考资料
由于是2.6平台上的调试,因为列出的也是2.6的参考文档
http://docs.python.org/2.6/library/io.html#module-interface

转载于:https://www.cnblogs.com/rockpine/p/3228890.html

对python文件方法open的探究相关推荐

  1. MATLAB调用python文件方法

    MATLAB是学术界最常用的编程工具,虽然MATLAB的功能已经很强大了,但是相对于开源的python来说,python丰富的开源工具和框架也是MATLAB所望尘莫及的.在编程实现任务所需的功能时,可 ...

  2. sublime交互执行python文件方法

    出处:http://blog.chinaunix.net/uid-12014716-id-4269991.html ------------------------------------------ ...

  3. Python 文件 close() 方法

    描述 Python 文件 close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误. close() 方法允许调用多次. 当 file 对 ...

  4. python文件信息排序_python文件排序的方法总结

    在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符:用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名'屏蔽'). (1 ...

  5. python脚本设置linux环境变量_Linux环境变量export方法与修改文件方法的区别

    玩蛇网推荐图文教程:python 列表 要想修改Linux环境变量有两种方法可以实现,但是关于Linux环境变量export方法与修改文件方法的区别你又了解多少呢?设置 Linux 环境变量可以通过 ...

  6. 小猿圈Python学习教程之后端接收前端回传的文件方法

    现在人工智能已经深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下后端接收前端回传的文件方法,希望对于刚刚自学python的你有一定的帮助. 如下所示: fi ...

  7. python文件的用法,Python 文件 readlines() 使用方法及示例

    Python 文件 readlines() 使用方法及示例 概述 readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... ...

  8. 以下不是python文件读写方法的是-Python 文件I/O

    Python 文件I/O 本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把 ...

  9. python本地读csv文件_python读写csv文件方法详细总结

    python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来. 在编写python程序的时候需要csv模块或者pandas模块,其中csv ...

最新文章

  1. 从数理统计简史中看正态分布的历史由来
  2. 程序员为什么会有职业瓶颈?
  3. js解决EasyUI页面渲染速度慢问题(Mask遮罩)
  4. spring--源码分析
  5. 【Python+selenium Wendriver API】之鼠标悬停事件
  6. django之创建第6-1个项目-自定义过滤器
  7. AcWing 523. 组合数问题
  8. ionic3 调用本地相册并上传图片
  9. r a/b 测试_R中的A / B测试
  10. php模糊搜索慢怎么办,MySQL中文模糊检索问题的解决方法_php
  11. PTA11、 输入输出-计算字符串中的数 (10 分)
  12. MySQL HandlerSocket插件 资料
  13. 博客6:磁盘以及创建文件系统的相关知识点
  14. ❤️java多线程并发编程入门 教程合集❤️
  15. 4200有linux版本么,如何检查Linux版本
  16. webstorm软件使用汉化包
  17. Unity中通过ButtonClicked更换GameOgject纹理图片
  18. 区块链对于相关流程和环节的联系,让元宇宙不再是虚无缥缈的概念
  19. ^^^ 存货盘盈盘亏的账务处理 Accounting for Inventory Profit and Inventory Loss with Goods Stock...
  20. 如何在iPhone上关闭“请勿打扰”

热门文章

  1. Vision Transformer太火!这门开源课也火了!十小时现场coding带你玩转ViT 爆款SOTA算法!...
  2. 有偿数据收集 | 哈工大手写作文图片收集
  3. ECCV 2020 论文大盘点-人脸技术篇
  4. Oracle PCTfree assm,Oracle 12C LMT ASSM 完美测试
  5. python教程-做个淘宝双十一满减攻略
  6. 收藏 | Pytorch-lightning的使用
  7. 简单的TensorFlow分类教程
  8. 深度学习实战 | 使用Kera预测人物年龄
  9. eigen库学习笔记
  10. 复练-关于面试的科技树-V1004-求职面试的阶段和策略