Python打造命令行工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sophisticated_/article/details/85338747

与命令行相关的 Python 语言

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

import sys 
print(sys.argv) 

使用 sys.stdinfileinput 读取标准输入

import sys 
for line in sys.stdin: 
	print(line, end="") 

使用 getpass 库读取密码

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

使用 ConfigParse 解析配置文件

要解析一个配置文件,首先需要创建一个 ConfigParser 对象。allow no value 默认取值为 False, 表示在 配置文件中是否允许选项没有值的情况。 默认情况下,所有的选项都应该有一个值。 但是, 在一些特殊的应用中,选项存在就表示取值为真,选项不存在就表示取值为假。

import ConfigParser 
cf = ConfigParser.ConfigParser(allow_no_value=True) 

有了 ConfigParser 对象以后,可以使用 read 方法从配置文件中读取配置内容,也可以 使用 readfp 方法从一个已经打开的文件中读取配置内容

cf.read( 'my.cnf') 
[’my.cnf ’] 

ConfigParser 中有很多的方法,其中与读取配置文件,判断配置项相关的方法有 :

  • sections:返回一个包含所有章节的列表;
  • has_section :判断章节是否存在;
  • items:以元组的形式返回所有选项;
  • options :返回一个包含章节下所有选项的列表;
  • has_option:判断某个选项是否存在;
  • get、 getboolean、 getinit、 getfloat:获取选项的值。

ConfigParser 也提供了许多方法便于我们修改配置文件:

  • remove section:删除一个章节;
  • add section:添加一个章节;
  • remote_option:删除一个选项;
  • set:添加一个选项;
  • write 将 ConfigParser 对象中的数据保存到文件中。

使用 logging 记录日志

在最简单的使用中,我们直接导人 logging 模块, 然后调用它的 debug、 info、 warn、 error 和 critical 等 函数记录日志

  • Logger:日志记录器,是应用程序中能直接使用的接口;
  • Handler:日志处理器,用以表明将日志保存到什么地方以及保存多久;
  • Formatter:格式化,用以配置日志的输出格式。

对于复杂的项目, 一般将日志配置保存到配置文件中:

[loggers] 
keys = root 

[handlers] 
keys = logfile 

[formatters] 
keys = generic 

[ logger_root] 
handlers = logfile 

[handler_logfile] 
class = handlers.TimedRotatingFileHandler 
args = ('app . log','midnight', 1 , 10) 
level = DEBUG 
formatter = generic 

[formatter_generic] 
format%(asctime)s %(levelname)-5.5s [%(name)s:%( lineno)s]%(message)s

使用 click 解析命令行参数

Click 是 Flask 的作者( Armin Ronacher)开发的一个第三方模块,用于快速创建命令 行

我们以 Click 官方文档中的例子来演示 click 的使用。 如下所示:

import click 

@click.command () 
@click.option (' --count ', default=1, help = 'Number of greetings.') 
@click.option(' --name ', prompt = ' Your name ', help= 'The person to greet.') 
def hello(count, name) : 
	'''Simple program that greets NAME for a total of COUNT times .''' 
	for x in range(count): 
		click.echo(' Hello %s !' %name)
if name == 'main':
	hello ()

我们没有直接指定 name 这个参数时, Click 会提示我们在交互模式下输入。 如下所示 :

$ python hello.py --count=3 
Your name : John 
Hello John! 
Hello John ! 
Hello John ! 

猜你喜欢

转载自blog.csdn.net/Sophisticated_/article/details/85338747