python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
文件打开方式
当我们用open()函数去打开文件的时候,有好几种打开的模式。
'r'->只读
'w'->只写,文件已存在则清空,不存在则创建。
'a'->追加,写到文件末尾
'b'->二进制模式,比如打开图像、音频、word文件。
'+'->更新(可读可写)
这个带'+'号的有点难以理解,上代码感受下。
with open('foo.txt', 'w+') as f:
f.write('bar ')
f.seek(0)
data = f.read()
可以看到,上面这段代码,它不但可以写,还可以读出来。注意要先定位到开头,f.seek(0),不然读出来的是空数据。
一些人可能会有迷惑,既然带'+'号是可读可写,那'w+'跟'r+'有什么不同。
那就是,
'w+'会清空,会创建 (文件已存在则清空,不存在则创建。)
'r+'不清空,不创建
不要用二进制模式打开文本文件先看下面代码的"诡异”现象。
假设在windows下,我有个f.txt文件,里面的内容是下面这样的。
hello
world
代码一,
with open('f.txt', 'r') as f:
print f.readlines()
with open('f.txt', 'rb') as f:
print f.readlines()
输出
['hello ', 'world ']
['hello ', 'world ']
代码二,
with open('f.txt', 'rb') as f:
data = f.read()
with open('f.txt', 'w') as f:
f.write(data)
打开文件,变成了下面这样,
hello^M
world^M
首先,先理解换行符' '跟回车符' '的概念。
' ',换行符(LF,Line-Feed ),指新的一行。
' ',回车符(CR,Carriage-Return),指回到行头。
因为在不同系统下的换行标识是不一样的。
windows->' '
unix->' '
mac->' '
这就是为什么windows下的txt在linux打开的时候行尾会有'^M'。
这就是为什么我在linux下跑脚本导出游戏数据下到本地windows打开变成了一行。
其实文本文件也是二进制文件,是文本编码的二进制文件,文本文件对一些不可见字符进行了处理,增加可读性。
在python中,可以通过os.linesep获得当前系统的换行标识。比如在windows下,os.linesep是' '。
在python中操作换行标识的时候,并不用管是在什么平台下,直接用' '就行了,python会自动根据不同系统转成不同标识。
有了上面这些理论依据,就可以解析本文开头代码的"诡异”现象了。
代码一中,用文本模式打开的文件,换行标识会被python处理成' ',而用二进制模式打开则原封不动。
代码二中,用二进制模式打开,用文本模式写入。二进制打开原封不动还是' ',而文本模式写入的时候因为python会把' '转成' ',所以其实就等于是写入了' ',于是就多了个'^M'。
本文标题: 详解Python中open()函数指定文件打开方式的用法
本文地址: http://www.cppcns.com/jiaoben/python/152407.html
python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...相关推荐
- sh执行文件 参数传递_详解shell中脚本参数传递的两种方式
方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...
- python的装饰器迭代器与生成器_详解python中的生成器、迭代器、闭包、装饰器
迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1|1可迭代对象 以直接作用于 for ...
- python比较两个字符串相似度_详解Python 字符串相似性的几种度量方法
字符串的相似性比较应用场合很多,像拼写纠错.文本去重.上下文相似性等. 评价字符串相似度最常见的办法就是:把一个字符串通过插入.删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种 ...
- python用turtle画字母n、h_详解python使用turtle库来画一朵花
看了群主最后成像的图片,应该是循环了36次画方框,每次有10度的偏移. 当然不能提前看答案,自己试着写代码. 之前有用过海龟画图来画过五角星.奥运五环.围棋盘等,所以感觉不难. # !/usr/bin ...
- linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解
下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...
- python scatter参数详解_Python 中 scatter 函数参数及用法详解
Python 中 scatter 函数参数及用法详解 Python 中 scatter 函数参数及用法详解 这里有新鲜出炉的 Python 教程, 程序狗速度看过来! Python 编程语言 Pyth ...
- python中文件打开的合法模式组合_详解python中各种文件打开模式
在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...
- python读写文件详解,将数据写入一个文件或读一个文件写入另一个文件中。
目录 实践一:读取文件并打印,read() 实践二:读取文件的一行并打印,readline() 实践三:读取文件的所有行存入到一个列表中并打印,readlines() 实践四:向文件中写入字符串,wr ...
- 群晖rsync同步详解_FreeNas中使用rsync同步文件
声明:本文为本站[NASGEEK]原创文章,未经许可不得转载! FreeNas上有各种方法可以备份同步文件,比如云同步任务.安装syncthing插件等.这里介绍一个十分简便的同步方法:rsync.这 ...
最新文章
- C++11中rvalue references的使用
- linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式
- RK3288 GMAC整理
- SugarCRM 在Html中增加超连接按钮
- 如何解决文件不存在_传奇微端配置Pak密码文件不存在怎么解决?传奇分享汇
- 编程环境中Runtime(运行时)的三个含义
- linux那些事之中断与异常(AMD64架构)_1
- java继承案例分析,Java day5【第十四章】继承案例分析
- Oracle单实例开机自启动
- linux下oracle登陆建表,Oracle建表过程初学
- 汇编语言学习之安装编译器及书籍选择
- android 关联按键和坐标,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...
- 40163 php,【PHP】微信支付JsApi 40163错误,_PHP_ 少侠科技
- Shell脚本加密工具——Shc
- 13视频监控-01视频监控布局-videobox
- RMQ---csu1809
- 自我检查,看清自己 看清自己什么皮肤。
- 我在哪?(寒假每日一题 35)
- 艾司博讯:拼多多商品怎样多件一起付款?
- 新手如何进行PLC的远程上下载和编程调试?
热门文章
- 左转待转区----当同向直行信号灯绿灯亮时,左转弯的车辆进入左转待转区等候放行信号(即使此时左转弯灯是红色的) 注意:当直行红灯时候禁止进入...
- 如何解读「量子计算应对大数据挑战:中国科大首次实现量子机器学习算法」?——是KNN算法吗?...
- python 字典过滤
- Django xadmin 后台自定义action 动作
- Altium Designer 使用小结
- [置顶] 也论百度轻应用--一个开发者的吐槽
- drf-频率组件 权限组件
- 文本分类实战(七)—— Adversarial LSTM模型
- 关于PHP 使用 unset 销毁变量 但是 没有销毁内存的 记录
- Python标准库:内置函数dict(mapping, **kwarg)