argparse用法
用法直接附上代码
import argparse
def get_args():
# 创建解析器
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument('--triviaqa_file', help='Triviaqa file')
parser.add_argument('--squad_file', help='Squad file')
parser.add_argument('--wikipedia_dir', help='Wikipedia doc dir')
parser.add_argument('--web_dir', help='Web doc dir')
parser.add_argument('--seed', default=10, type=int, help='Random seed')
parser.add_argument('--max_num_tokens', default=800, type=int, help='Maximum number of tokens from a document')
parser.add_argument('--sample_size', default=8000000000000, type=int, help='Random seed')
parser.add_argument('--tokenizer', default='tokenizers/punkt/english.pickle', help='Sentence tokenizer')
parser.add_argument("--no_progress_bar", action='store_true', help="no progress bar. Good for printing")
parser.add_argument("--attention_mode", type=str, choices=['tvm', 'sliding_chunks'],
default='sliding_chunks', help='Which implementation of selfattention to use')
# 解析参数
args = parser.parse_args()
return args
args = get_args()
action=‘store_true’,只要运行时该变量有传参就将该变量设为True
logging用法
参考:https://www.cnblogs.com/xianyulouie/p/11041777.html
默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
Logging.Formatter:这个类配置了日志的格式,在里面自定义设置日期和时间,输出日志的时候将会按照设置的格式显示内容。
Logging.Logger:Logger是Logging模块的主体,进行以下三项工作:
- 为程序提供记录日志的接口
- 判断日志所处级别,并判断是否要过滤
- 根据其日志级别将该条日志分发给不同handler
用法直接附上代码
import logging
# 初始化日志对象
logging.basicConfig(
# 日志级别
level = logging.INFO,
# 日志格式
# 时间、代码所在文件名、代码行号、日志级别名字、日志信息
format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
# 打印日志的时间
datefmt = '%a, %d %b %Y %H:%M:%S',
# 日志文件存放的目录(目录必须存在)及日志文件名
filename = 'd:/report.log',
# 打开日志文件的方式
filemode = 'w'
)
# 定义类存储日志信息
def get_logger(filename, print2screen=True):
# 创建一个logger
logger = logging.getLogger(filename)
# 设置logger级别为INFO
logger.setLevel(logging.INFO)
# 将日志信息输出到磁盘文件上
fh = logging.FileHandler(filename)
# 输出到file的logging等级的开关
fh.setLevel(logging.INFO)
#日志信息会输出到指定的stream中,如果stream为空则默认输出到sys.stderr
ch = logging.StreamHandler()
# 输出到sys.stderr的logging等级的开关
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter('[%(asctime)s][%(thread)d][%(filename)s][line: %(lineno)d][%(levelname)s] >> %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 将logger添加到handler里面
logger.addHandler(fh)
# 如果需要输出到控制台,就将ch加入,并返回
if print2screen:
logger.addHandler(ch)
return logger
logger = get_logger(os.path.join(args.save_path, 'train.log'))
logger.info('Building models')