[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
换行回车
回忆上次内容
区分概念
主机旁边 的 控制面板
终端硬件基础上的
软件壳子
电传打印机
终端硬件
主机网络中
最终的 端点
terminal终端TeleTYpewritershellConsole控制台存储文件 的 时候
我 在文件里 打了回车
\n系统 将
0x0a存入字节 进文件换行
自动就有 回车功能 了吗?🤔回忆一下
被忽略的
\r
\r
\r也是一个 ascii字符转义序列
转义字符
\是\r是什么是
转义呢?转义转义 转化含义
把原来 两个字符 :
\和r转化为
\r这样一个字符没错!
\r是1个ascii字符

那么
\r这一个字符对应字节 是
多少呢?
字节状态
\r对应的字节是0x0d

这个
0x0d好像 在安徒生童话中 出现过
安徒生童话
在
文本观看 模式下自动 回车换行

在
字节观看 模式下0a0a前面是0d(carriage-return)
(line-feed)
先
0a换行再
0d回车

貌似
总是 成对出现的
为什么 呢?
换行 和 回车
换行水平 不动
垂直 向上喂纸
对应 字节
0x0aLine-Feed
所以是
feed

回车运输字符 的 装置 (Carriage)
回到行首
垂直 不动
水平
回到纸张左侧对应 字节
0x0dCarriage-Return
可移动的打印头
所以是
Return这是
两个控制信号不过他俩 经常 联合使用
联合使用
当
CR和LF联合使用时会将 打印纸张 上移一行
打字位置 将
回到 新行的最左侧也就是
今天所理解 的 回车换行

电传打字机
渐渐 退出了历史舞台
当初的纸张 变成了 今天的显示器
打字机的按键 也演变为 如今的键盘
甚至 有了 操作系统
操作系统 是 如何理解 回车换行 的呢?
操作系统 Unix
受限于
内存和软盘空间 的 不足
设计者 决定采用
使用
\n替代\r\n默认
\n=\r\n单个字符 来表示 换行回车一个字符干两个事

类unix(unix-like) 都是如此
包括 BSD、Linux
unix 和 c 的羁绊
C语言
既干
\n的活(换行)又干
\r的活(回车)延续了 这个惯例
\n输出中有
\n的话

如果只有
\n下图这样的
本应是

实际上是
下图这样的

是 回车加换行 的
那还有
纯换行 不回车的效果 吗?
纯换行
纯换行效果可以用
\v

\v在ascii中的含义是VT垂直制表位

序号是 11

Commodore64 和 mac
Commondore64
使用
\r代替\r\n这 就有
分歧了一度 也曾 很流行
同样出于 节省空间的目的
Commodore64 影响了 mac
mac
使用
\r代替\r\n甚至按键 都叫做return
早期 也是
后来 为了 和
unix保持一致可能是因为
Mac用户连接
unix-like的服务器换行不统一
文件读取会出现错误
需要用
ssh命令从
\r修改为\n流行的三大系统(类unix、mac、win)
两个都是
\n来来看看 微软的windows
微软
DOS系统 是兼容 CP/M 形成的
CP/M使用\r\n键盘上 印的名称是
enter先 LineFeed 再 Return
也是
\r\n符号是↵
对应字节是b"\x0d\x0a"
后来 的
windows顺着
DOS的惯例

跨系统 浏览文档的时候
会有时候 多行 变成 一行
有的会出现
'0D','^M'之类的乱码不只是 windows记事本🗒️
而且 微软office 等
都曾有 这个困扰
win10 最新的记事本🗒️
已经 优化
python 解释器的理解
标准 输入输出流
靠的是 终端屏幕
靠的是 终端键盘
python 的 字符输入
python 的 显示输出
具体字符
就会退回到本行开头
CarriageReturn
就会换行
LineFeed
显示
\n的时候显示
\r的时候

将
\n写入文件的时候存储 在 文件 中
就会以
b"\x0a"的字节形式将
\r写入文件的时候存储 在 文件 中
就会以
b"\x0d"的字节形式python3解释器 基于
操作系统操作系统基于cpu架构不管什么样的
操作系统、cpu 架构\n换行\r退到行头只要是 python解释器
对于
\n、\r的解释方式 就是统一的这种统一 是跨平台的
跨系统、跨cpu架构的
总结
对于换行和回车
不同层面的理解
unix-like做得对不管 在什么系统、什么架构 上
在我python上 是统一 的
unix-like
mac
windows
带头简化 成
\n步调一致 就好
为了 避免麻烦
我和 unix-like一致
原来 我用户多
定什么规矩 我说了算
惹了 很多问题
现在 我还是 随大流 吧
两件事
经常 一起干
但也可以 分别干
电传打字机
不同操作系统
python 解释器
光说不练假把式
我能看看电传打字机吗?🤔
我们下次再看!👋蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy

