我有一个将命令行参数带入parser
并修改某些配置设置的代码。像这样:
命令:
python mycode.py --config-file "some_file.yaml" SOMETHING.subsetting_a 2 SOMETHING.subsetting_b 3
然后执行:
import argparse
parser = argparse.ArgumentParser(description="Some description here")
parser.add_argument(
"--config-file",
default="",
metavar="FILE",
help="path to config file",
type=str,
)
//some more 'add_argument' lines here
args = parser.parse_args()
但是当我使用jupyter notebook时,将参数直接提供给解析器会更容易,就像它们来自命令行一样。如何创建包含命令的字符串(如上所述)并将其传递给parser
?
答案 0 :(得分:1)
parse_args
's first optional argument is the list of arguments to parse,签名为:
ArgumentParser.parse_args(args=None, namespace=None)
如果您不提供,则只需从args
中提取sys.argv
。
因此,将其称为:
args = parser.parse_args(['mycode.py', '--config-file', "some_file.yaml", 'SOMETHING.subsetting_a', '2', 'SOMETHING.subsetting_a'])
(其中list
包含您喜欢的任何内容),它将代替sys.argv
使用它。
答案 1 :(得分:0)
注意:如@ShadowRanger所述,无需使用 sudo a2dismod php7.2
sudo a2enmod php7.3
。看到他的回应。
一种方法是使用sys.argv
模仿命令行参数:
sys.argv
args的内容有点像这样:
import sys
sys.argv = [
"--config-file" , "some_file.yaml",
"SOMETHING.subsetting_a" , "2",
"SOMETHING.subsetting_b" , "3"]
args = parser.parse_args(sys.argv)
类似于> Namespace(config_file='some_file.yaml', opts=['SOMETHING.subsetting_a', '2', 'SOMETHING.subsetting_b', '3')
的输出。