c传字符串给python_如何将命令行参数作为字符串传递给从C执行的嵌入式Python脚本?...

我有一个C程序,它公开了一个

Python接口来执行用户的嵌入式Python脚本.

用户插入要运行的Python脚本的路径和命令行参数.

然后脚本执行完毕

boost::python::exec_file(filename, main_globals, main_globals)

要将命令行参数传递给Python脚本,我们必须通过Python C-API函数设置它们

PySys_SetArgv(int args, char** argv)

在调用exec_file()之前.

但是这需要标记包含命令行参数的用户字符串以获取参数列表,然后通过PySys_SetArgv将它们传递回Python解释器.

这不仅仅是浪费时间,因为这样主要的C程序必须负责对命令行字符串进行标记,而不知道后面的逻辑,这只在自定义用户的脚本中定义.

在metacode中,更好,更清晰的方法是这样的:

string command_line_args = '-v -p "filename" -t="anotherfile" --list="["a", "b"]" --myFunnyOpt'

exec_file( filename, command_line_args, ...)

我花了几个小时查看Boost和Python C-API文档,但我找不到任何有用的东西.

你知道是否有办法实现这一点,即传递一整串命令行

来自C的嵌入式Python脚本的参数?

更新:

在我的情况下我用过:

// defining the separators

std::string escape_char = "\\"; // the escape character

std::string sep_char = " "; // empty space as separator

std::string quote_char = ""; // empty string --> we don't want a quote char'

boost::escaped_list_separator sep( escape_char, sep_char, quote_char );

因为我希望能够解析包含字符串的元组,例如:

'--option-two=("A", "B")'

如果您使用:

escaped_list_separator sep('\\', ' ', '"');

与在原始帖子中一样,您没有正确标记引用的字符串.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值