将值从argparse传递给不同的方法

时间:2018-02-14 18:00:51

标签: python methods python-3.6 argparse

argparse存在问题。我使用argparse从提示传递不同的值,我想使用不同的函数。我该如何安排我的代码?

到目前为止,问题是当调用方法split_dataset时,程序堆栈

def split_dataset(destpath):
 start = t.clock()

 load_atomrefs(os.path.join(destpath, 'atomref.npz'))
 load_data(os.path.join(destpath, 'qm9.db'))

 total_time = (t.clock()-start)
 print(f"Download of DataSet Completed in {total_time}s")

def params_initialization(train_batch,test_batch,lr,**kwargs):
   parameters = {'train_batch' : train_batch, 'test_batch' : test_batch, 'lr' : lr  }

if __name__ == '__main__':
 parser = argparse.ArgumentParser()

 parser.set_defaults(method = split_dataset)

 parser.add_argument('--destpath', help='Path to QM9 directory')
 parser.add_argument('--train_batch', type=int, help='Batch size for training', default=32)
 parser.add_argument('--test_batch', type=int, help='Batch size for testing',default=32)
 parser.add_argument('--lr', type=float, help='Learning rate',
                    default=1e-3)
 parser.add_argument('--ntrain', help='Number of training examples',
                    type=int, default=-1)
 parser.add_argument('--nval', help='Number of validation examples',
                    type=int, default=-1)

 args = parser.parse_args()

 if not os.path.exists(args.destpath):
    os.makedirs(args.destpath)

 args.method(**vars(args))

1 个答案:

答案 0 :(得分:0)

使用parser.add_argument_group并在另一个函数中添加调用组参数

def function_to_call_group(parser_group):
    parser_group.add_argument(--argument)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    group1 = parser.add_argument_group("Group1")
    function_to_call_group(group1)
    # add other arguments to parser
    args = parser.parse_args()