第3章:打造命令行工具

Posted allenhu320

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章:打造命令行工具相关的知识,希望对你有一定的参考价值。

1.与命令行相关的Python语言特性

1).使用sys.argv获取命令行参数

import sys
print(sys.argv)

2).使用sys.stdin和fileinput读取标准输入

import sys
def get_content():
    return sys.stdin.readlines()
print(get_content())
使用Ctrl+d退出
fileinput的使用非常简单,大部分情况下,我们直接调用fileinput模块的input方法按行读取内容即可
用for循环遍历文件内容
# cat read_from_fileinput.py 
from __future__ import print_function
import fileinput

for line in fileinput.input():
    print(line, end=" ")

# cat /etc/passwd | python read_from_fileinput.py

3).使用SystemExit异常打印错误信息

4).使用getpass库读取密码 

import getpass
user = getpass.getuser()
passwd = getpass.getpass(your password: )
print(user,passwd)

 

2.使用configparser解析配置文件

import configparser
cf = configparser.ConfigParser(allow_no_value=True)
cf.read(/etc/my.cnf)
print(cf.sections())
print(cf.has_section(client))
print(cf.options(client))
print(cf.has_option(client,user))
print(cf.get(client,user))

 

3.使用argparse解析命令行参数

1).ArgumentParse解析器

import argparse

def _argparse():
    parser = argparse.ArgumentParser(description="This is description")
    parser.add_argument(--host, action=store, dest=server, default="localhost", help=connect to host)
    parser.add_argument(-t, action=store_true, dest=boolean_switch, default=False, help=Set a switch to true)
    return parser.parse_args()

def main():
    parser = _argparse()
    print(parser)
    print(host = , parser.server)
    print(boolean_switch = , parser.boolean_switch)

if __name__ == __main__:
    main()

 2).模仿mysql客户端的命令行参数 

import argparse

def _argparse():
    parser = argparse.ArgumentParser(description=A Python-MySQL client)
    parser.add_argument(--host, action=store, dest=host, required=True, help=connect to host)
    parser.add_argument(-u, --user, action=store, dest=user, required=True, help=user for login)
    parser.add_argument(-p, --password, action=store, dest=password, required=True, help=password to use when connecting to server)
    parser.add_argument(-P, --port, action=store, dest=port, default=3306, type=int, help=port number to use for connection or 3306 for default)
    parser.add_argument(-v, --version, action=version, version=%(prog)s 0.1)
    return parser.parse_args()

def main():
    parser = _argparse()
    conn_args = dict(host=parser.host, user=parser.user, password=parser.password, port=parser.port)
    print(conn_args)

if __name__ == __main__:
    main()

 

4.使用logging记录日志

1).日志的作用

    诊断日志

    审计日志

2).Python的logging模块

import logging

logging.debug(debug message)
logging.info(info message)
logging.warn(warn message)
logging.error(error message)
logging.critical(critical message)

 

3).配置日志格式

 

5.与命令行相关的开源项目

1).使用click解析命令行参数

2).使用prompt_toolkit打造交互式命令行工具

 

以上是关于第3章:打造命令行工具的主要内容,如果未能解决你的问题,请参考以下文章

Java生产环境下性能监控与调优详解

《Linux命令行与shell脚本编程大全 第3版》

第16章 pyinstaller库的使用

Go语言打造分布式Crontab 轻松搞定高性能任务调度

持续更新中Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章

ffmpeg architecture(上)