如何通过 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
。
我正在尝试通过 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
。