相信老铁们,平时使用Python最多之一的功能应该就是Print了,那请问老铁们知道Print究竟有多厉害吗?比如,自动对号入座,或者每次打印出来信息都能让人看得非常舒服!
下面的两图,就以Python执行Oracle表空间使用率语句返回的结果来说,你更喜欢哪种打印方式呢?
图一
图二
就以格式来说,老铁们是否觉得图二更加一目了然(特别吸睛)呢?那么,接下来我们就一步步来进阶Print的功能,最后以图一和图二的转换作为实验,希望老铁们喜欢,并对打印会有不一样的体验!
本文大纲Attention
1. 普遍式 Print练习
2. 占位式 Print练习
3. Format式Print练习
4. 美滋滋 Print项目
1 普遍式 Print练习
Print的普通玩法,相信大家都玩的特别溜啦,这里就耍下我的"关刀'吧!
Example 1 :
Example 2 :
2 占位式 Print练习
占位式,顾名思义就是占着茅坑.....
占着不一样的茅坑,可是需要不一样的符号,比如字符串,就要用s,用于像s型的,长长的;如整型,就不要拖泥又带水,要用d......这好像没啥好比喻,毕竟吹不下去了
Python格式化符号及含义
这个嘛,会几个呢?对齐,百分号估计大家平时用得比较多,其他用的少,那这里就不一一说明了,挑重点讲!
Python格式化操作符的辅助命令
占位符的宽度,左右对齐方式,下面会有例子,老铁们有兴趣就执行下,自己感受感受。没兴趣,就当自己会好了。
Example 1 : %s
Example 2 : %d
Example 3 : %f
Example 4 : %s,%d,%f
Example 5 : 左对齐
Example 6 : 空格右对齐 和 0 右对齐
3 格式化 Print练习
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 %。format 函数可以接受不限个参数,位置可以不按顺序。也就是说,Format的功能更强大,不服来战咯~
3.1 普通玩法
Example 1 : % 都懒得打
Example 2 : 自动给format值编号
Example 3 : 一一对应,就是这么Smart
Example 4 : 看,我的顺序还可以秀
3.2 格式化限定输出(重点)
3.2.1 基本语法: 语法是{ }中带 :号
3.2.2 对齐填充: {:对齐方式 填充}
3.2.3 优秀之处: 可填充,可对齐,混搭没问题
3.2.4 对齐方式: ^、分别是居中、左对齐、右对齐,后面带宽度
3.2.5 填充方式: 号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。
Example 1 :输出左对齐定长为10位
Example 2 :输出右对齐定长为10位
Example 3 :输出居中对齐定长为10位,填充x
4 美滋滋 Print项目
不积硅步,无以至千里。
不积小流,无以成江海。
下面,就让小安Lasi分享下项目经验吧。
如何将Python执行SQL语句返回的元组像Mysql格式那样子输出。
如下图,以下是mysql输出信息的格式,但我们演示的时候,将会以Oracle输出的表空间使用率信息作为演示。
Example 1 :Mysql输出,自带美颜
Example 2 : 安老师的初级美颜脚本来了1# -*- coding: GB18030 -*-
2
3"""
4@author: 机智的安老师
5@time:2019/4/27 11:04
6"""
7
8def print_tbs(conlist):
9 print("+{0:-<20}|{1:-<20}|{2:-<20}|{3:-<20}|{4:-<20}+".format("-", "-", "-", "-", "-")) # 居左对齐
10 print("|{0:^20}|{1:^20}|{2:^20}|{3:^20}|{4:^20}|".format("TABLESPACE_NAME", "sumMB", "usedMB", "freeMB","USED_PERCENT")) # 居中对齐
11 print("+{0:-<20}|{1:-<20}|{2:-<20}|{3:-<20}|{4:-<20}+".format("-", "-", "-", "-", "-")) # 居左对齐
12 for i in range(len(conlist)):
13 print("|{0:<20}|{1:<20}|{2:<20}|{3:<20}|{4:<20}|".format(*conlist[i])) # 居左对齐
14 print("+{0:-<20}|{1:-<20}|{2:-<20}|{3:-<20}|{4:-<20}+".format("-", "-", "-", "-", "-")) # 居左对齐
15 print("%d rows selected." % (len(conlist)))
16 print()
17
18if __name__ == '__main__':
19 tbsfreelist = [
20 ('USERS', 177.99, 169.70, 8.29, ' 95.34'),
21 ('SQL_DATA', 248.65, 235.56, 13.09, ' 94.73'),
22 ('TEST_DATA', 546.68, 507.75, 38.92, ' 92.88'),
23 ('WORK_DATA', 328, 281.04, 46.95, ' 85.68'),
24 ('WORK_INDEX', 548.63, 468.34375, 80.29, ' 85.37'),
25 ('SYSAUX', 235.25, 200.66, 34.58, ' 85.30'),
26 ('SYSTEM', 241.31, 201.31, 45.21, ' 82.12')]
27 print_tbs(tbsfreelist)
Result 2 : 这结果,我看"型"。
小老弟 : 等等,小安Lasi,你最后的美颜结果这不是开头的图二吗?
小安Lasi : 是滴!你以为我写篇文章容易吗我
,快快关注我,下期就会详解本文源码,并分享全自动高级美颜封装源码喔!
小老弟 : 听说还能自动根据列名长度和列信息的长度,完美打印呢,想想就好激动!
小安Lasi : 居然敢剧透,这是你说的吗?看招!
小安Lasi : 五一过后,Python自动化运维公众号页面就要升级改版啦,并且将会开启粉丝群,希望有更多想学习自动化运维的小哥哥小姐姐大叔大妈一起来加入我们这个积极向上,互帮互助的大家庭喔~