show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次讲了\n、\r之外的转义序列
\a
是␇ (bell),\b
退回一格\t
水平制表符\v
、\f
LineFeed
- 通过16进制数值转义
\xhh
- 把(hh)16进制对应的ascii字符输出
- 通过8进制数值转义
\nnn
- 把(nnn)8进制对应的ascii字符输出
- 这次加了3个
\\
输出\
\"
输出 `\'
输出'
- 还有哪个转义字符我们一直没研究?🤔
- 这个
\e
是干什么的? - 这个
\e
是干什么的? - 转义之后的的含义竟然还是escape
\
是转义字符,要和后面的字符一起构成转义序列\e
是转义序列,转义的含义是Escape- 那从这里Escape之后是要去哪里呢?
- 这样可以从当前字符序列Escape出去
- 后面的内容可能就不是纯文本了
- 而是控制序列
[2;10H
控制DEC VT102只在2-10
列进行输出
- 这个标准来自于ANSI escape code
- 电传打字机的输出调节
- 只能通过控制色带来控制打印颜色和深度
- 早期的终端只能通过调节显示器亮度来进行改变
- 各个终端的制造商都有一些自己的独特的控制字符
- 就像各种手机充电接口
- 只要接受到这些控制字符
- 终端就可以进行调整
- 比如在某个横纵坐标位置
[x,y]
输出字符
- 但是不同终端控制方式不同
- 可能造成显示状态异常
- 远程终端输出结果不可控
- 需要一个关于控制字符的统一标准
- 1964年
ISO 646
- 在欧洲以
ECMA-6
的形式存在 - 后来被
ANSI
(American National Standards Institute
) - 整合为工业标准
- 发展为ANSI X3.64
- 在欧洲以
- 在计算机发展为图形用户界面之后
- 在各种
terminal软件
中实现
- 在各种
- Teletype Model 33终端的键盘
- 1963年推出
- 数据通信行业中最受欢迎的终端之一
- 注意shift和ctrl都已经出现
- Alt Mode出现在第1列
- 当时还没有esc键
- 现在键盘都有这个按键
- 1的左下,Q的右边
- 可以从当前的纯文字输出里面逃escape出来
- 进行控制信息的传输
- 现在这个东西叫做esc
- 早年间的一体机
- 有的esc还在1旁边
- 这是当年最流行的DEC VT102
- 后来放在第一行第一列
escape
体现重要性- 玩一些
terminal
上面的游戏的时候也可以退出主游戏 - 进行一些设置、存盘、读档、退出之类的操作
- 知道什么时候退比较重要
- 这是非常常用的US101标准键盘了
- 这个开始有了行业标准
- 没有电脑也能用键盘练习指法
- 后来键盘部分有一定程度软化,有了touchbar
- 手机和pad阶段好像不容易找到esc按键了
- 但这个字符一直都在
- 而且很硬
- \33[nA 光标上移n行
- \33[nB 光标下移n行
- \33[nC 光标右移n行
- \33[nD 光标左移n行
- \33[y;xH设置光标位置
- \33[2J 清屏
- \33[K 清除从光标到行尾的内容
- \33[s 保存光标位置
- \33[u 恢复光标位置
- \33[?25l 隐藏光标
- \33[?25h 显示光标
- 我们试试\33[2J
print("\33[2J")
\33
是转义序列\33
是\033
的省略写法\33
是8进制数形态- 也可以写成16进制形态
\x1b
- J是模式选择
- 清屏模式
- 分为四种清屏
- 0J - 从光标清到屏幕结束
- 1J - 从光标清到屏幕开头
- 2J - 整屏幕清
- 3J - 整屏幕清并选择清空滚动缓存
print("\33[1;1Hoeasy")
- H是选择模式
- 1;1指的是屏幕左上角
- 整个屏幕80*24
- 1;1指的是左上角
- 中间用的是;
- 设置好了之后输出后面的字符oeasy
- 可以先清屏再输出么?
print("\33[2J")
print("\33[1;1Hoeasy")
print("\33[2J\33[1;1Hoeasy")
print("\33[2J\33[10;10Hoeasy")
- 这样终端接受到了一串字符串
- "\33[2J\33[1;1Hoeasy"
- \33[2J 终端接收到后清屏
- \33[1;1H终端接收到后设置光标
- 终端输出oeasy
- "\33[2J\33[10;10Hoeasy"
- 先清屏
- 再在(10,10)坐标输出
oeasy
- 退出游乐园
- 然后用三引号的方式去原样输出这个图像
- 尝试自己做一下
- %s/\$/\\/g
- 替换所有结尾处的单引号
- for是一个循环
- 让i从1到10
- 每个位置愣一秒
- str把数字i变成字符串好相加
- 纵向可以了
- 横向可以么?
- " "*i就是输出i个空格
- 如果我想让猫说出时间
- 还能刷新怎么办呢?
- 找到前面的输出时间的py函数
#!/usr/bin/python3
import time
localtime = time.strftime(' %H:%M:%S',time.localtime(time.time()))
print(localtime,end="")
- 先验证一下
- 然后尝试整合
- 这样就可以又移动
- 又刷新时间了
- 我们了解了一个新的转义模式
- \33控制字符串
- 他退出当前输入字符串
- 进行控制信息的何止
- 可以清屏
- 也可以确定光标位置
- 还能做什么呢?
- 应该可以设置颜色???🤔
- 我们下次再说!👋