系统交互摘要

一、程序接口

当我们需要在命令行或其他编程语言中运行 .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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值