通过c 的python脚本解析argv



我有一些python脚本来处理从互联网上收到的API接收的JSON对象。现在,我的主要应用程序用C (用于GUI和我的API密钥保护)编写。我从用户那里获得了2个输入。其中一个是一个昵称,可以有空间。现在,当我将它们传递给C 程序时(现在它仅编写为控制台应用程序)时,当我仅使用""时,它起作用,但是:

W:src>XD "nickname with spaces" summoner_by_name
nickname with spaces
summoner_by_name
python main.py API_KEY nickname with spaces summoner_by_name
ARGV:
main.py
API_KEY
nickname
with
spaces
summoner_by_name
END OF ARGV

所以第一部分是此代码的一部分:

int main(int argc, char** argv){
    std::string name = argv[1];
    std::string command = argv[2];
    std::cout << name << std::endl;
    std::cout << command << std::endl;
    std::cout << python + API_KEY + " " + name + " " + command << std::endl;
    system((python + API_KEY + " " + name + " " + command).c_str());
    return 0;
}

第二部分是此代码的一部分:

def main(argv):
    API_KEY = argv[1]
    NAME = argv[2]
    print("ARGV:")
    for i in argv:
        print(i)
    print("END OF ARGV")

因此,C 似乎在没有""的情况下传递了2个值,这就是为什么它不起作用(我试图用引号自行通过CMDLine传递它 - 它起作用了)。它在Linux上起作用。我如何在空格中传递这些值?

在构造系统调用命令行时,您可能需要自己引用字符串:

system((python + API_KEY + " "" + name + "" " + command).c_str());

最新更新