打造命令工具
(python linux熊管理与自动化运维第三章)
3.1.1
sys.argv为一个list,list内的 所有数据为字符串
例如 test_argv.py 内容如下
import sys
print(sys.argv)
命令:python test_argv.py 123 localhost
输出:['test_argv.py', '123', 'localhost']
3.1.2
使用sys.stdin 和fileinput读入标准输入
sys库中,有三个文件描述符stdin stdout stderr,这三个文件不需要open函数就可以打开
例如从标准输入输入(命令行读入)
import sys
for line in sys.stdin:
print(line, end=" ")
注:这里print(end=”“)表示print不换行,使用空格代替换行
可以使用python代替awk
使用fileinput进行多文件处理,代替sys.stdin
fileinput是python的标准库
fileinput常用的方法
filename()
fileno()
filelineno()
isfirstline()
isstdin fileinput()
3.14 getpass
避免输入的命令显示在命令行上
import getpass
user = getpass.getuser()
passwd = getpass.getpass(‘your passwd:’)
your passwd:
print(user, passwd)
3.2 ConfigParse
典型的配置文件包含1到多个章节(session)
[cline]
port = 3306
usr = mysql
passwd = mysql
python 使用标准库中ConfigParse来解析配置文件
参考:
https://www.cnblogs.com/pymkl/articles/8137004.html
3.3 argpass
创建 ArgumentParser() 对象
调用 add_argument() 方法添加参数
使用 parse_args() 解析添加的参数
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integer', type=int, help='display an integer')
args = parser.parse_args()
print args.integer
参考:
http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html
3.4 使用logging记录日志
使用log代替print效果
使用日志的好处:
1)所有日志具有统一的格式,方便后续处理
2)丰富的日志格式,只需要通过配置文件就可以修改日志的格式,不需要修改代码
3)根据重要性对日志进行分类,只显示重要的日志
4)自动管理日志文件
日志的作用:诊断日志(分析排查线上的问题),审计日志(商业分析而记录,比如读取用户的交易信息)
3.4.2python中标准的logging模块
实例1、
python 使用日志 import logging
级别critical > error > warming > info > debug
默认级别warming ,只有大于warming级别才会输出,默认输出控制台,故可以代替print
# -*- coding: utf-8 -*-
import logging
logging.debug('s')
logging.info('a')
logging.warning('n')
logging.error('d')
logging.critical('y')
输出:
WARNING:root:n
ERROR:root:d
CRITICAL:root:y
实例2、
配置简单的日志格式,使用logging.basicConfig(),在当前目录生成一个app.log
# -*- coding: utf-8 -*-
import logging
logging.basicConfig(filename = 'app.log', level = logging.INFO)
logging.debug('s')
logging.info('a')
logging.warning('n')
logging.error('d')
logging.critical('y')
输出:
INFO:root:a
WARNING:root:n
ERROR:root:d
CRITICAL:root:y
实例3、
日志复杂配置,使用Logger Handler Formatter
将日志文件保存到一个配置文件
可以参考:
https://www.cnblogs.com/CJOKER/p/8295272.html
https://blog.csdn.net/zyz511919766/article/details/25136485
3.5与命令行相关的开源项目
click模块,作用等效于argparse(类别request 相比于urllib)(后续有时间可以仔细看看)
prompt_toolkit 处理交互式场景的开源工具 (后续有时间可以仔细看看)