Python换行符问题:rn还是n?

php中文网
发布: 2016-06-06 16:23:41
原创
3696人浏览过

执行以下Python代码:

fn = 'test.txt'
file(fn, 'w+').write('test test2')
content = file(fn, 'r').read()
print content.replace(' ', '\r').replace(' ', '\n')

打印的结果不依赖平台,都是:
test test2
但是test.txt的内容却依赖平台而变化(用notepad++、vi等程序查看):
windows下是:test test2
linux下却是:test test2

我想问的问题是,如何保证Python写入文件的' '字符不随平台变化,即保证一定是' '?

回复内容:

章硕,js & python夏一一、乔3少 赞同这不是python的问题,windows的换行是 ,unix的是 ,mac的是 。
这是一个很经典的问题。因为不同系统下默认的换行符不同。字符处理时候,这样的“不同”会带来很大的问题,例如line[-2]和line.strpi()会因为平台不同返回不同的值。

解决方法:
Python 2
PEP 278 -- Universal Newline Support,感谢毕勤的补充):
1)如果不是txt文件,建议用wb和rb来读写。通过二进制读写,不会有换行问题。
2)如果需要明文内容,请用rU来读取(强烈推荐),即U通用换行模式(Universal new line mode)。该模式会把所有的换行符( )替换为 。只支持读入,但是也足够了。这是Python 提供给我们的最好的选择,没有之一。

对比r和rU的结果:
content = file(fn, 'r').read()
# test
test2
# 这里的换行会因不同系统而不同                       
登录后复制
file(fn, 'w+').write('test test2')
改成
file(fn, 'wb+').write('test test2')
就行了。Windows 平台上 Python 区分 Binary 和 ASCII 模式。ASCII 模式下换行符会在读写时自动换为 (详见 [1])。*nix 平台下没有这个区别。
[1]: docs.python.org/tutoria python可以根据系统自动选择换行符,只要使用 os.linesep 就可以判断出来 这不是python的问题,windows的换行是 ,unix的是 ,mac的是 。 回答除了第一个都略微偏题了. 个人习惯来说,当编辑文件时,尽量使用二进制格式,这样会避免跨平台时出错. 根本不需要知道每个平台是 ,还是 . 只要养成 rb,wb等习惯就行了. Rio 就是一个很好的编程习惯. 不特别指定的话,python会自适应各个平台的差异,比如 和 的不同。
想达到楼主的目地,可以用二进制模式打开和操作文件即可。 现在这个答案已经错了0.0,正确如下(在不可预见的未来,这个答案也很可能错了,期待有人@我)。
在远古时代:windows的换行是 ,unix的是 ,mac的是 完全正确!
Mac OS 9 以及之前的系统的换行符是 CR( ),从 Mac OS X (后来改名为“OS X”)开始的换行符是 LF( )。
参考Did Mac OS Lion switch to using line feeds (LF ' ') for line breaks instead of carriage returns (CR ' ')? 我知道的一点是:CLRF结尾的文件可以用【dos2unix】命令转换为RF结尾的文件。
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号