(笔记)打造命令工具(3)

打造命令工具

(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 处理交互式场景的开源工具 (后续有时间可以仔细看看)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值