Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 调用外部python程序并传递标志_Python 3.x_Function_Module_Parameters_Flags - Fatal编程技术网

Python 3.x 调用外部python程序并传递标志

Python 3.x 调用外部python程序并传递标志,python-3.x,function,module,parameters,flags,Python 3.x,Function,Module,Parameters,Flags,我熟悉从另一个python程序调用外部python程序 用于声明代码结构的Psudocode如下所示: #MAIN PROGRAM import secondary #... is_OK = secondary.wrapper_function(param1, param2) if is_OK == "0": #do_something parser.add_argument( "--parameter2", typ

我熟悉从另一个python程序调用外部python程序

用于声明代码结构的Psudocode如下所示:

#MAIN PROGRAM
import secondary
#...
is_OK = secondary.wrapper_function(param1, param2)
if is_OK == "0":
   #do_something
parser.add_argument(
        "--parameter2",
        type=str,
        default="grid",
        choices=[
            # All choices are listed here
        ],
        help="defines a major parameter",
    )
以及外部python程序:

#SECONDARY PROGRAM
import lib1
def wrapper_function(param1, param2):
   myparam = param1 #get parameters
   #do_stuff
   return "0"
如您所见,我们将参数传递给函数

然而,在我现在的例子中,我要调用的python脚本从标志接收其参数

这就是你所说的

python my_program.py --parameter1 "0.4" --parameter2 "none"
程序用如下方式处理标志:

#MAIN PROGRAM
import secondary
#...
is_OK = secondary.wrapper_function(param1, param2)
if is_OK == "0":
   #do_something
parser.add_argument(
        "--parameter2",
        type=str,
        default="grid",
        choices=[
            # All choices are listed here
        ],
        help="defines a major parameter",
    )
我可以将代码放在函数的外部程序中,以便从主程序调用它


我的问题是,如何传递外部程序从终端接收的作为标志的参数?

这里有两个基本选项:

  • 将外部(Python?)程序视为黑盒命令行程序,并使用调用它

  • 但是,如果您附近有程序的源代码,并且其内部API与CLI
    解析器
    完全分离,则可以
    导入my_程序
    并直接调用其功能,可能需要使用自定义包装函数


  • 哪个选项更好完全取决于您希望两个程序之间的耦合强度有多强或有多弱。

    谢谢!是的,我有外部程序的代码。使用子流程是不可能的。我已经在另一个应用程序中完成了第二种方法(我在最初的问题中给出了代码示例)。但那个外部程序接收参数作为输入。我不确定如何将终端标志作为函数参数传递。