Skip to main content

moregeek program

[oeasy]python0040-多极客编程

换行回车

回忆上次内容

  • 区分概念
  • ​terminal​​终端
  • 主机网络中
  • 最终的 端点
  • ​TeleTYpewriter​
  • 电传打印机
  • 终端硬件
  • ​shell​
  • 终端硬件基础上的
  • 软件壳子
  • ​Console​​ 控制台
  • 主机旁边 的 控制面板
  • 存储文件 的 时候
  • 我 在文件里 打了回车​​\n​
  • 系统 将​​0x0a​​存入字节 进文件
  • 换行 ​​自动​​就有 回车功能 了吗?🤔
  • 回忆一下
  • 被忽略的 ​​\r​

\r

  • ​\r​​ 也是一个 ascii字符
  • ​\​​是
  • 转义字符
  • ​\r​​是
  • 转义序列
  • 什么是 转义 呢?
  • 转义转义 转化含义
  • 把原来 两个字符 : ​​\​​和​​r​
  • 转化为 ​​\r​​ 这样一个字符
  • 没错!
  • ​\r​​ 是 ​​1​​个​​ascii​​字符

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python

  • 那么 ​​\r​​ 这一个字符
  • 对应字节 是​​多少​​ 呢?

字节状态

  • ​\r​​ 对应的字节是
  • ​0x0d​

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_02

  • 这个​​0x0d​
  • 好像 在安徒生童话中 出现过

安徒生童话

  • 在 ​​文本​​观看 模式下
  • 自动 回车换行

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_03

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

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_04

  • 貌似
  • 总是 成对出现的
  • 为什么 呢?

换行 和 回车

  • ​换行​
  • 对应 字节​​0x0a​
  • Line-Feed
  • 水平 不动
  • 垂直 向上喂纸
  • 所以是 ​​feed​

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_05

  • ​回车​
  • 对应 字节​​0x0d​
  • Carriage-Return
  • 垂直 不动
  • 水平 ​​回​​到纸张左侧
  • 可移动的打印头
  • 运输字符 的 装置 (Carriage)
  • 回到行首
  • 所以是 ​​Return​
  • 这是 ​​两​​个控制信号
  • 不过他俩 经常 联合使用

联合使用

  • 当​​CR​​和​​LF​​ 联合使用时
  • 会将 打印纸张 上移一行
  • 打字位置 将​​回​​到 新行的最左侧
  • 也就是
  • 今天所理解 的 回车换行

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_06

  • 电传打字机
  • 渐渐 退出了历史舞台
  • 当初的纸张 变成了 今天的显示器
  • 打字机的按键 也演变为 如今的键盘
  • 甚至 有了 操作系统
  • 操作系统 是 如何理解 回车换行 的呢?

操作系统 ​​Unix​

  • 受限于
  • 内存和软盘空间 的 不足
  • 设计者 决定采用
  • ​单​​个字符 来表示 换行回车
  • 使用 ​​\n​​ 替代 ​​\r\n​
  • 默认 ​​\n​​ = ​​\r\n​
  • ​一​​个字符干​​两​​个事

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_07

  • 类unix(unix-like) 都是如此
  • 包括 BSD、Linux

unix 和 c 的羁绊

  • C语言
  • 延续了 这个惯例
  • ​\n​
  • 既干 ​​\n​​的活(换行)
  • 又干 ​​\r​​的活(回车)
  • 输出中有 \n 的话

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_08

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

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_09

  • 实际上是
  • 下图这样的

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_10

  • 是 回车加换行 的
  • 那还有
  • 纯换行 不回车的效果 吗?

纯换行

  • 纯换行效果可以用​​\v​

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_11

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

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_转义_12

  • 序号是 11

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_unix_13

Commodore64 和 mac

  • Commondore64
  • 一度 也曾 很流行
  • 同样出于 节省空间的目的
  • 使用 ​​\r​​ 代替 ​​\r\n​
  • 这 就有​​分歧​​ 了
  • Commodore64 影响了 mac
  • mac
  • 早期 也是
  • 使用 ​​\r​​ 代替 ​​\r\n​
  • 甚至按键 都叫做 <kbd>return</kbd>
  • 后来 为了 和​​unix​​保持一致
  • 从 ​​\r​​ 修改为 ​​\n​
  • 可能是因为​​Mac​​用户
  • 需要用 ​​ssh​​ 命令
  • 连接 ​​unix-like​​的服务器
  • 换行不统一
  • 文件读取会出现错误
  • 流行的三大系统(类unix、mac、win)
  • 两个都是​​\n​
  • 来来看看 微软的windows

微软

  • DOS系统 是兼容 CP/M 形成的
  • ​CP/M​​ 使用 ​​\r\n​
  • 键盘上 印的名称是​​enter​
  • 符号是<kbd>↵</kbd>
  • 先 LineFeed 再 Return
  • 也是​​\r\n​
  • 对应字节是b"\x0d\x0a"
  • 后来 的 ​​windows​
  • 顺着 ​​DOS​​的惯例

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_unix_14

  • 跨系统 浏览文档的时候
  • 会有时候 多行 变成 一行
  • 有的会出现 ​​'0D'​​,​​ '^M'​​ 之类的乱码
  • 不只是 windows记事本🗒️
  • 而且 微软office 等
  • 都曾有 这个困扰
  • win10 最新的记事本🗒️
  • 已经 优化

python 解释器的理解

  • 标准 输入输出流
  • python 的 字符输入
  • 靠的是 终端键盘
  • python 的 显示输出
  • 靠的是 终端屏幕
  • 具体字符
  • 显示​​\n​​的时候
  • 就会换行
  • LineFeed
  • 显示​​\r​​的时候
  • 就会退回到本行开头
  • CarriageReturn

[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines_python_15

  • 将​​\n​​ 写入文件的时候
  • 就会以 ​​b"\x0a"​​的字节形式
  • 存储 在 文件 中
  • 将​​\r​​ 写入文件的时候
  • 就会以 ​​b"\x0d"​​的字节形式
  • 存储 在 文件 中
  • python3解释器 基于 ​​操作系统​
  • ​操作系统​​ 基于 ​​cpu架构​
  • 不管什么样的​​操作系统​​、​​cpu 架构​
  • 只要是 python解释器
  • 对于​​\n​​、​​\r​​的解释方式 就是统一的
  • ​\n​​ 换行
  • ​\r​​ 退到行头
  • 这种统一 是跨平台的
  • 跨系统、跨cpu架构的

总结

  • 对于换行和回车
  • 不同层面的理解
  • 电传打字机
  • 两件事
  • 经常 一起干
  • 但也可以 分别干
  • 不同操作系统
  • unix-like
  • 带头简化 成 ​​\n​
  • 步调一致 就好
  • mac
  • 为了 避免麻烦
  • 我和 unix-like一致
  • windows
  • 原来 我用户多
  • 定什么规矩 我说了算
  • 惹了 很多问题
  • 现在 我还是 随大流 吧
  • python 解释器
  • ​unix-like​​ 做得对
  • 不管 在什么系统、什么架构 上
  • 在我python上 是统一 的
  • 光说不练假把式
  • 我能看看电传打字机吗?🤔

©著作权归作者所有:来自51CTO博客作者overmind1980的原创作品,请联系作者获取转载授权,否则将追究法律责任

场景编程集锦-乒坛争锋:孙颖莎vs伊藤美城-多极客编程

1. 场景描述 孙颖莎和伊藤美诚是世界女子乒坛的顶尖运动员。根据国际乒联2022年11月15日公布的世界排名,孙颖莎位列第一,伊藤美诚排名第五。孙颖莎是中国女子乒乓球队的三大主力,曾获得2020年东京奥运会女乒团体赛金牌,2019年亚洲乒乓球锦标赛女单冠军,蝉联2021和2022年WTT世界杯女单冠军;伊藤美诚则是日本女子乒乓球队的绝对主力和王牌,她是2020年东京奥运会乒乓球混合双打冠军,女单

[oeasy]python0037-多极客编程

换行回车回忆上次内容​​换行​​​ 和 ​​回车​​ 是两回事 ​​换行​​对应字节​​0x0A​​Line-Feed 水平 不动垂直 向上喂纸所以是 ​​feed​​​​回车​​对应字节​​0x0D​​Carriage-Return 垂直 不动水平 ​​回​​到纸张左侧可移动的打印头 运输字符 的 装置 (Carriage)​​回​​到 行首所以是 ​​Return​​​​tty​​​、​​te

【团队效率提升】python-pywebio介绍-多极客编程

作者:京东零售 关键Q&A快速了解PyWebIOQ:首先,什么是PyWebIO?A:PyWebIO提供了一系列命令式的交互函数,能够让咱们用只用Python就可以编写 Web 应用, 不需要编写前端页面和后端接口, 让简易的UI开发效率大大提高(本人非研发,用词可能不妥,大家轻点喷)Q:其次,我们能用来干嘛?? 这对一个团队的效率提升有什么作用??A:Pywebio的作用在于让咱们可以快速

场景编程集锦-月光族的期待-多极客编程

1. 场景描述 “月光族”是指没到下一个发薪日,工资就被全部花光的一群人。这个称谓是一个没有贬义的中性词。“月光族”通常是有知识有文化、有固定的工作收入,秉持着乐观豁达的生活态度,力争做到量入为出,挣多少用多少。他/她们喜欢消费,但不疯狂。偶尔也有因为房贷、车贷或者房租等压力,造成收支不平衡,使用信用卡透支的状况,显然“月光族”是银行信用卡的理想客群。“月光族”时常盘算着还有几天发工资,何时还上信

场景编程集锦-电闪雷鸣的数学联想-多极客编程

1. 场景描述电闪雷鸣总能给人许多的联想。我联想到了电闪雷鸣、暴雨倾盆、山洪爆发、洪水泛滥的灾难场景,这种现象在中国古代通常被解释为“冒犯神灵,雷神发怒”的因果关系。我联想到了著名的风筝实验。1752年,美国科学家本杰明·富兰克林用风筝和钥匙做了一次科学实验,他冒着雷击的危险用风筝把雷电引下来,证明了闪电是一种放电现象。富兰克林关于天上和人间的电是同一个东西的假说,在这次实验中得到了光辉的证实。这

场景编程集锦-懵懂的青春-多极客编程

1. 场景描述“等待着下课,等待着放学,等待游戏的童年"。当罗大佑这首耳熟能详的“童年”再度想起的时候,你和我是否都会被这个熟悉的旋律带回到那个只属我们的懵懂年代?你还记得那个“同桌的你”吗?那个周杰伦唱到的“等你下课”的人,如今身在何方?在那样一个没有手机微信和短信传递讯息的年代,你是否经历或见证过这样的场景,通过一张张“小纸条”,给那个心仪的“她/他”传递浪漫?那些曾经在课堂上冒险传递诸如:“

二分查找进阶版-多极客编程

一、题目时间限制:500ms空间限制:64MB很久以前,有位同学,在学完算法课的二分后,激动的振臂高呼:“我学会二分了!”。此时,一位学长从旁边经过听到此话,决定出一道题考考他,挫挫同学的锐气,让这位学弟再去好好刷二分.学长告诉学弟n个数据,再询问他q次,每次询问告诉学弟一个x,要求学弟在每次询问给出的x的下标。二、解题思路那么我们该怎么根据值找下标呢,如果能做到一对一映射,每个值对应一个下标,实

重载的奥义之函数重载-多极客编程

一、基本定义                重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一个篮子装蔬菜,也可以装水果或者其它,使用的是同一个篮子,但是可以用篮子重复装载的东西不一样。        函数重载是C++多态(静态多态)的特征体现,它可以允许重复使用同一个函数名(篮子)的函数,但是函数的参数列表(篮子装的东西)是可以不一样的。这样就可以利用函数的重载功能设计一系列

场景编程集锦-乒坛争锋:孙颖莎vs伊藤美城-多极客编程

1. 场景描述 孙颖莎和伊藤美诚是世界女子乒坛的顶尖运动员。根据国际乒联2022年11月15日公布的世界排名,孙颖莎位列第一,伊藤美诚排名第五。孙颖莎是中国女子乒乓球队的三大主力,曾获得2020年东京奥运会女乒团体赛金牌,2019年亚洲乒乓球锦标赛女单冠军,蝉联2021和2022年WTT世界杯女单冠军;伊藤美诚则是日本女子乒乓球队的绝对主力和王牌,她是2020年东京奥运会乒乓球混合双打冠军,女单

场景编程集锦-月光族的期待-多极客编程

1. 场景描述 “月光族”是指没到下一个发薪日,工资就被全部花光的一群人。这个称谓是一个没有贬义的中性词。“月光族”通常是有知识有文化、有固定的工作收入,秉持着乐观豁达的生活态度,力争做到量入为出,挣多少用多少。他/她们喜欢消费,但不疯狂。偶尔也有因为房贷、车贷或者房租等压力,造成收支不平衡,使用信用卡透支的状况,显然“月光族”是银行信用卡的理想客群。“月光族”时常盘算着还有几天发工资,何时还上信

场景编程集锦-电闪雷鸣的数学联想-多极客编程

1. 场景描述电闪雷鸣总能给人许多的联想。我联想到了电闪雷鸣、暴雨倾盆、山洪爆发、洪水泛滥的灾难场景,这种现象在中国古代通常被解释为“冒犯神灵,雷神发怒”的因果关系。我联想到了著名的风筝实验。1752年,美国科学家本杰明·富兰克林用风筝和钥匙做了一次科学实验,他冒着雷击的危险用风筝把雷电引下来,证明了闪电是一种放电现象。富兰克林关于天上和人间的电是同一个东西的假说,在这次实验中得到了光辉的证实。这

nginx代理配置只允许指定ip访问-多极客编程

在使用Nginx时,有时只想要指定的IP进行访问,其余IP都需要禁止,今天就来说一下,Nginx如何配置允许、禁止指定Ip访问location / { index index.jsp; proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header; proxy_set_he