如何通过 Python3 将多个带值的参数传递给可执行文件?

How to Pass multiple arguments with values to executable via Python3?

我正在尝试通过 python3 运行 一个 windows 可执行文件并具有以下代码片段。参数可以是 key-value 对的形式,但可能很少有参数可能没有像下面的 arg1 这样的值。 arg2 需要有一个值,该值作为下面创建的 arg2 变量传递。 data.filepath需要用来构造arg2

 # data.filepath resolves to \server1\data\inputs\filename.txt
 arg2 = "--arg2 {}".format(data.filepath)  
child = subprocess.Popen([output_path, "--arg1", arg2, "--arg3 val3", "--arg4 val4"],
                         shell=False, stderr=subprocess.STDOUT)
child.communicate()[0]
rc = child.returncode

但似乎我没有遵循正确的语法并出现如下错误

Throw location unknown (consider using BOOST_THROW_EXCEPTION)
Dynamic exception type: class boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class boost::program_options::unknown_option> >
std::exception::what: unrecognised option '--arg2 \server1\data\inputs\filename.txt'

请告诉我 python 中的正确语法,以便将参数正确传递给可执行文件。

显然,您的程序 运行 期望接收一个参数及其值作为单独的字符串(这很有意义)。你可以这样做

if phase_of_moon() == 'waxing gibbous':
    arg2 = ['--arg2', data.filepath]
else:
    arg2 = []
x = Popen([output_path, '--arg1', *arg2, '--arg3', val3])

使用 iterable unpacking 扩展 arg2