【发布时间】:2021-01-10 16:44:55
【问题描述】:
我有一个 Python3 应用程序,我想使用 Ubuntu 18.04 终端向它传递一些参数:
python3 app/app.py -af app/annotation_file.json -em app/model/ -output_dir app/new_model/ -n_iter 100
我正在尝试使用 argparse:
if __name__ == "__main__":
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-af", "--annotation_file",
dest="main", default=None,
help="Path to annotated file")
parser.add_argument("-em", "--existing_model_path",
dest="main", default=None,
help="Retrain existing model or train from scratch")
parser.add_argument("-output_dir", "--output_dir_to_save_model",
dest="main", default="/app/model",
help="Path to save newly generated NER model")
parser.add_argument("-n_iter", "--num_iter",
dest="main", default=100,
help="Number of iterations to train the model")
args = parser.parse_args()
print(args)
main(args)
输出:
Namespace(main='100')
Namespace(main='100')
但我没有得到输出。
如何将上述所有命名参数传递给我的 main() 函数?
【问题讨论】:
-
python中没有特殊的
main -
@MadPhysicist 我的代码中有一个 main() 函数。我想从终端传递参数。
-
然后显示。
-
请记住,
dest是每个选项最终所在的命名空间中的变量。我不知道您为什么将它们都称为main。也许删除dest='main'部分? -
请出示 MCVE。我基本上已经回答了你的问题。
标签: python python-3.x command-line terminal argparse