与命令行相关的 Python 语言
使用 sys.argv
获取命令行参数
import sys
print(sys.argv)
使用 sys.stdin
和 fileinput
读取标准输入
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 !