当前位置:  开发笔记 > 编程语言 > 正文

read()python 2和python 3之间的差异

如何解决《read()python2和python3之间的差异》经验,为你挑选了1个好方法。

使用以下MWE:

with open('a','w') as f:
    f.write('\r')
with open('a','r') as f:
    print(ord(f.read()))

我得到以下输出:

$ python2 test.py 
13
$ python3 test.py 
10

你能解释一下原因吗?13\rascii和UTF-8 的预期十进制数,据我所知.



1> ShadowRanger..:

Python 3open默认为通用换行模式(newline=None),而Python 2open仅在模式字符串包含时启用通用换行模式U.

在通用换行模式中,序列\r(旧Mac),\n(UNIX)或\r\n(DOS/Windows)都被识别为换行符,并自动转换为\n行尾,具有一致的表示以简化字符串操作.

如果你想在Python 2中使用通用换行符,你可以使用模式字符串来启用或使用io.open它,这几乎与Python 3的内置相当open(io.open在Python 3上只是另一种说法open).

如果要在Python 3上禁用通用换行处理,请传递open一个参数newline=''(用于通用识别,以便在读取/迭代时断行,但不转换行结尾)或newline='\n'(例如)表示仅\n被识别为行结束,再次,不执行行结尾的转换.传递newline=''需要妥善处理某些文件格式; 该csv模块进行处理结束自己的路线,并newline=''确保它到达之前,不会丢失任何信息csv的读者.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有