原本在pycharm执行的代码,想拆分放到jupyter notebook执行
特别是命令行参数传输的这个参数会出现bug
对应命令行获取参数的讲解可看我这篇文章:python中argparse模块关于 parse_args() 函数详解(全)
对应 parse_args
函数代码如下:
def parse_args():
parser = argparse.ArgumentParser(
description='训练')
parser.add_argument('-t', '--title', help='the name of running experiment',
dest='title',
default=None,
type=str
)
parser.add_argument('-ppi', '--ppi', help='the chosen type of PPI',
dest='ppi',
default='CPDB',
type=str
)
# 其他参数,此处省略
args = parser.parse_args()
return args
在jupyter notebook执行该行命令:args = parse_args()
出现的bug如下所示:
usage: ipykernel_launcher.py [-h] [-t TITLE] [-ppi PPI] [-omic OMIC]
[-cancer CANCER] [-e EPOCHS] [-p PATIENCE]
[-dp DP] [-lr LR] [-wd WD] [-hs1 HS1] [-hs2 HS2]
[-thr_go THR_GO] [-thr_seq THR_SEQ]
[-thr_exp THR_EXP] [-thr_path THR_PATH]
[-seed SEED]
ipykernel_launcher.py: error: unrecognized arguments: -f /home/kkjz/.local/share/jupyter/runtime/kernel-9aeb050b-0615-4455-bcd0-e34169f0f932.json
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2
/home/kkjz/anaconda3/envs/py38/lib/python3.8/site-packages/IPython/core/interactiveshell.py:3406: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
原因:本身应该赋值一些参数传入,此处没有参数传入导致无法编译成功
将其改为如下:args = parse_args(args=['-t','output', '-ppi', 'CPDB'])
,对应赋值,并且转换为列表传入(依旧不行)
结果如下:
深究其原因发现原函数代码没有args的参数,对应需要改写原函数参数
函数修改如下:
# 修改第一处,传入的参数
def parse_args(args):
parser = argparse.ArgumentParser(
description='训练')
parser.add_argument('-t', '--title', help='the name of running experiment',
dest='title',
default=None,
type=str
)
parser.add_argument('-ppi', '--ppi', help='the chosen type of PPI',
dest='ppi',
default='CPDB',
type=str
)
# 其他参数,此处省略
# 修改第二处,传入的参数
args = parser.parse_args(args)
return args
既然函数的传参有问题,又不知道怎么放
直接将其函数去除
对应如下:
# 整体前面的函数不要。python记得去除缩进
parser = argparse.ArgumentParser(
description='训练')
parser.add_argument('-t', '--title', help='the name of running experiment',
dest='title',
default=None,
type=str
)
parser.add_argument('-ppi', '--ppi', help='the chosen type of PPI',
dest='ppi',
default='CPDB',
type=str
)
# 其他参数,此处省略
函数调用变为:args = parser.parse_args(args=['-t','output', '-ppi', 'CPDB'])
,(注意与上面的区别)