我在这里有一个问题:我有一个GUI(wxpython),它有spinctrl,spinctrl的输出必须发送到c文件,它接受命令行参数,所以每当我使用subprocess执行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用户”,“无效密码”,“分段错误”。
答案 0 :(得分:2)
每当您使用shell=True
到subprocess.Popen
(或其中一个便利包装器)时,您应该完全按照在shell中键入的方式传递字符串,而不是list
。
来自docs:
如果shell为True,建议将args作为字符串而不是序列传递。