python3 \r和\n

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不影响字节内容。

posted @ 2023-05-28 09:42  挖洞404  阅读(767)  评论(0编辑  收藏  举报