Python文件读写时的换行符与回车符

主流操作系统结束符

操作系统 字符组合
UNIX & Mac OS X ‘\n’
MS Windows ‘\r\n’

测试环境:win10 + python2.7

1
2
3
4
5
6
for char in ("\n", "\r\n"):
for mode in ("w", "wb"):
filename = "%s_%s.txt" % (mode, "n" if len(char) == 1 else "rn")
with open(filename, mode) as f:
for x in range(5):
f.write("%s%s" % (x, char))
1
2
3
4
w_n.txt   \r\n
w_rn.txt \r\n
wb_n.txt \n
wb_rn.txt \r\n
  1. “w”方式写时的’\n’会在被系统自动替换为’\r\n’
  2. “wb”方式写时的’\n’和’\r\n’保持原样
1
2
3
4
5
for filename in ("test_n.txt", "test_rn.txt"):
for mode in ("r", "rb"):
with open(filename, mode) as f:
info = f.read()
print(filename, mode, info.__repr__())
1
2
3
4
('test_n.txt', 'r', "'aa\\nsdfd\\ndffdf\\n'")
('test_n.txt', 'rb', "'aa\\nsdfd\\ndffdf\\n'")
('test_rn.txt', 'r', "'aa\\nsdfd\\ndffdf\\n'")
('test_rn.txt', 'rb', "'aa\\r\\nsdfd\\r\\ndffdf\\r\\n'")
  1. “r”方式读时,文件中的’\r\n’会被系统替换为’\n’
  2. “rb”方式读时,文件中的’\r\n’或’\n’保持原样

测试环境:linux + python2.7

1
2
3
4
w_n.txt   \n
w_rn.txt \r\n
wb_n.txt \n
wb_rn.txt \r\n
  1. “w”和”wb”方式写时的’\r\n’和’\n’都保持原样
1
2
3
4
('test_n.txt', 'r', "'aa\\nsdfd\\ndffdf\\n'")
('test_n.txt', 'rb', "'aa\\nsdfd\\ndffdf\\n'")
('test_rn.txt', 'r', "'aa\\r\\nsdfd\\r\\ndffdf\\r\\n'")
('test_rn.txt', 'rb', "'aa\\r\\nsdfd\\r\\ndffdf\\r\\n'")
  1. “r”和”rb”方式读时,文件中的’\r\n’和’\n’都保持原样
  • linux的所有读写方式都会保持换行符原样
坚持原创技术分享,您的支持将鼓励我继续创作!