1、说明
\n:换行符,跳到下一行
\r:回车,跳到当前行的首部,\r会占据一个字符长度
windows下enter是 \r\n;
linux/unix下是\n;
mac下是\r
网络协议的头部字段间隔也是\r\n
2、比较分析
print('abc123zzz')
print('abc\n123\rzzz\n1234\r', end='')
print('000')
"""
abc123zzz
abc
zzz
000
"""
- 在windows+python环境中,向控制台输出。\n是普通的换行符,\r会将光标移动到当前行的行首。
- 如果直接继续输出,会将该行的字符的所有输出字符清除,再进行输出,而不是简单的覆盖。
- 如果是\r之后紧接着输出\n,则\r可以视为无效果
with open(file='a.txt', mode='w+', encoding='utf-8') as f:
s = '123\rabc\neee\r\nzzz'
print(s)
f.write(s)
f.seek(0)
s = f.read()
print(s, len(s), s.encode('utf-8'))
with open(file='a.txt', mode='rb') as f:
print(f.read())
"""
abc
eee
zzz
123
abc
eee
zzz 16 b'123\nabc\neee\n\nzzz'
b'123\rabc\r\neee\r\r\nzzz'
"""
- 在windows+python环境中,将\r和\n以字符写入文件,\r是直接写入,而\n会被转为\r\n两个字符
- 按字符读取时,单个的\r会被转为\n,\r\n两个字符会被转为\n单个字符。
- 按字节读取时,理解为直接读取所有字节
with open(file='a.txt', mode='wb+') as f:
s = '123\rabc\neee\r\nzzz'
print(s)
f.write(s.encode('utf-8'))
with open(file='a.txt', mode='rb') as f:
print(f.read())
"""
abc
eee
zzz
b'123\rabc\neee\r\nzzz'
"""
- 在windows+python环境中,将\r和\n以字节写入文件,是直接写入
综合来说,如果是字符的读和字符的写,如果不包含\r完全不影响使用效果。而包含\r,无论是单个的还是\r\n,按字符写入再按字符读取,效果上来说\r都是被转为\n,即\n和\n\n。
python从windows中按字符是读取不到\r字符的。
字节的读和字节写,无论是否包含\r不影响字节内容。
标签:nzzz,字符,abc,字节,123,print,python3 From: https://www.cnblogs.com/wd404/p/17345172.html