0

我在这里遇到一个问题:我有一个 GUI(wxpython),它有 spinctrl,spinctrl 的输出必须发送到 c 文件,它接受命令行参数,所以每当我使用子进程执行 c 文件时,它接受来自的值GUI 必须将 spinctrl 值发送给它,而不是手动输入。

我的代码是:

      ps = "password" 
      var1 = self.sc1.Getvalue()
      var2 = self.sc2.Getvalue()
      subprocess.call(['echo xsxsxs | sudo "./license.exe"', str(ps), str(var1), str(var2)],shell = True)

每当我运行此脚本时,它都不会显示输出/错误:(

如果我删除 echo xsxsxs| sudo 从第 4 行开始执行,然后显示错误:“您必须是 root 用户”、“无效密码”、“分段错误”。

4

1 回答 1

2

每当您使用shell=Trueto subprocess.Popen(或其中一个便利包装器)时,您应该传递一个字符串,就像您在 shell 中键入它的方式一样,而不是list.

来自文档

如果 shell 为 True,建议将 args 作为字符串而不是序列传递。

于 2013-02-15T04:41:51.857 回答