系统交互摘要

    xiaoxiao2022-07-12  148

    目录

    一、程序接口二、异常处理系统内置 Error自定义 Error 三、运维日志

    一、程序接口

    当我们需要在命令行或其他编程语言中运行 .py 文件并传入指定参数,编写程序接口的重要性就不言而喻了。传统的 Python 使用系统内置库 Argparse 实现接口定义。Google 于 2017 年底开源了从 TensorFlow 中衍变而来,对 Argparse 的简易封装,使用更为简便。以下便是相关代码实现:

    import sys from absl import flags from absl import app flags.DEFINE_string('A','String of A.','Help of A.') flags.DEFINE_integer('B',7,'Help of B.') FLAGS = flags.FLAGS def main(*args): print('Param A = %s'%FLAGS.A) sys.stdout.write('Param B = %s'%FLAGS.B) if __name__=='__main__': #flags.mark_flag_as_required("A") app.run(main)

    编写一个新的 .py 文件,命名为“test.py”,在命令行将地址调到相应目录下,输入以下命令,看看回应:

    >>> test.py Param A = String of A. Param B = 7 >>> test.py --A='New_String_of_A.' Param A = 'New_String_of_A.' Param B = 7 >>> test.py --A='New_String_of_A.' --B=4 Param A = 'New_String_of_A.' Param B = 4 >>> test.py -help -- A: Help of A. (default: 'String of A.') -- B: Help of B. (default: '7') (an integer)

    使用原始的 Argpase 实现同样的功能,代码如下:

    import sys import argparse parser = argparse.ArgumentParser(description='') parse.add_argument('--A', type=str, default='String of A.', help='Help of A.') parse.add_argument('--B', type=int, default='String of A.', help='Help of B.') args = parser.parse_args() def main(): print('Param A = %s'%args.A) sys.stdout.write('Param B = %s'%args.B) if __name__=='__main__': main()

    二、异常处理

    系统内置 Error

    异常类名描述Exception所有异常类的基类AttributeError对象 obj 没有指定成员时引发EOFError一个 “end of file” 到达控制台或文件输入引发错误IOError输入/输出操作(如打开文件)失败引发错误IndexError索引超出序列范围引发错误KeyError请求一个不存在的集合或字典关键字引发错误KeyboardInterrupt用户按 Ctrl - c 中断程序引发错误NameError使用不存在的标识符引发错误StopIteration下一次遍历的元素不存在时引发错误TypeError发送给函数的参数类型不正确引发错误ValueError函数参数值非法时引发错误ZeroDivisionError除数为 0 引发错误

    自定义 Error

    class UserError(Exception): pass raise UserError('This is the error you defined.')

    三、运维日志

    import logging # 日志基本设置 LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s" DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p" logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT) # 导出到日志 logging.debug("This is a debug log.") logging.info("This is a info log.") logging.warning("This is a warning log.") logging.error("This is a error log.") logging.critical("This is a critical log.")
    最新回复(0)