编写脚本的基本基础结构

basescript的Python项目详细描述


Build StatusPyPI version

python是一种优秀的语言,它使编写脚本变得非常 直截了当。在写很多剧本的过程中,我们意识到 我们一遍又一遍地做一些事情比如创建一个记录器 接受命令行参数。基本脚本非常简单 负责设置日志和其他基础知识的抽象 您可以专注于特定于应用程序的逻辑。

下面是基本脚本提供的一些功能:-日志记录-接受 使用argparse的命令行参数

安装

pip install basescript

用法

下面是一个简单的开始示例

你好世界

helloworld.py

frombasescriptimportBaseScriptclassHelloWorld(BaseScript):defrun(self):print"Hello world"if__name__=='__main__':HelloWorld().start()NOTE:allexamplesshowcasedhereareavailableunderthe``examples``directory

执行以下操作来运行上述操作:

python helloworld.py run

运行日志级别设置为“调试”的脚本

python helloworld.py --log-level DEBUG run

使用自定义日志文件运行脚本

python helloworld.py --log-level DEBUG --log mylog run

命令行参数,使用记录器

下面是一个更复杂的示例

加法器.py

frombasescriptimportBaseScriptclassAdder(BaseScript):# The following specifies the script description so that it be used# as a part of the usage doc when --help option is used during running.DESC='Adds numbers'def__init__(self):super(Adder,self).__init__()self.a=10self.b=20defdefine_args(self,parser):parser.add_argument('c',type=int,help='Number to add')defrun(self):self.log.info("Starting run of script ...")printself.a+self.b+self.args.cself.log.info("Script is done")if__name__=='__main__':Adder().start()

按如下所示运行脚本并观察所示的使用信息。注意 说明如何与c参数一起出现。

python adder.py --help
usage: adder.py [-h][--name NAME][--log-level LOG_LEVEL][--log-format {json,pretty}][--log-file LOG_FILE][--quiet][--metric-grouping-interval METRIC_GROUPING_INTERVAL][--debug]{run} ...

Adds numbers

optional arguments:
  -h, --help            show this help message and exit
  --name NAME           Name to identify this instance
  --log-level LOG_LEVEL
                        Logging level as picked from the logging module
  --log-format {json,pretty}
                        Force the format of the logs. By default, if the
                        command is from a terminal, print colorful logs.
                        Otherwise print json.
  --log-file LOG_FILE   Writes logs to log file if specified, default: None
  --quiet               if true, does not print logs to stderr, default: False
  --metric-grouping-interval METRIC_GROUPING_INTERVAL
                        To group metrics based on time interval ex:10 i.e;(10
                        sec)
  --debug               To run the code in debug mode

commands:
  {run}
python adder.py run --help
usage: adder.py run [-h] c

positional arguments:
  c           Number to add

optional arguments:
  -h, --help  show this help message and exit

立即运行脚本以查看预期的输出

python adder.py run 3060

在启用信息和更高级别日志的情况下运行相同的操作

python adder.py --log-level INFO 302016-04-10 13:48:27,356 INFO Starting run of script ...
602016-04-10 13:48:27,356 INFO Script is done

--log-level接受 https://docs.python.org/2/library/logging.html#logging-levels

log是使用python的标准^{tt4}创建的日志对象$ 模块。你可以在 https://docs.python.org/2/library/logging.html

度量分组

使用self.log编写Metric时,可以指定 type=metric。如果完成此操作,后台线程将自动 通过平均值将多个度量组合为一个(以防止写入 日志行太多)。test.py

from basescript import BaseScript
import time
import random

class Stats(BaseScript):
    def __init__(self):
        super(Stats, self).__init__()

    def run(self):
        ts = time.time()
        while True:
            # Metric Format.
            self.log.info("stats", time_duration=(time.time()-ts), type="metric", random_number=random.randint(1, 50))

if __name__ == '__main__':
    Stats().start()

运行命令以查看输出。

python test.py --metric-grouping-interval 5 run

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Maven中的java,为什么要运行“mvn clean”?   java会降低图像质量。OutOfMemory异常Android   在Java8中将函数传递到流的过滤方法   jboss6。x java。lang.NoClassDefFoundError,当我将<listenerclass>包含到web时。xml java   java读取图像像素时,像素Alpha始终为255   java在迭代后跳过一行   java如何创建我自己的单链表   意图上的java空指针异常。getStringExtra.:安卓   具有连接实体的java Hibernate onetoone映射   java需要帮助在自制的仓鼠模拟器上实现启动/恢复/暂停/停止线程操作   如何测试非主方法?[Java,IntelliJ]   java jdbc自动提交(false)不起作用   java在JADE中的同一容器中创建多个代理   java OkHttp获取失败的响应正文   java Webdriver flash按钮