2013-02-15 138 views
0

我在这里有一个问题:我有一个GUI(wxpython),它有spinctrl,spinctrl的输出必须发送到c文件,接受命令行参数,所以无论何时我使用子进程执行c文件,因为它接受来自GUI的值,spinctrl值必须发送给它而不是手动输入。将变量从python脚本传递给C程序(命令行参数)

我的代码是:

 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) 

每当我运行此脚本,它亘古不变的显示输出/错误:(

如果我删除回声xsxsxs |从线4须藤然后执行则显示错误:“你必须是root用户”,“密码无效”,“分段错误”

回答

2

无论何时使用shell=Truesubprocess.Popen(或其中一个便利包装),都应该按照输入方式在你的shell中,不是list

docs

If shell is True, it is recommended to pass args as a string rather than as a sequence.

+0

我因此未理解你的概念。你能澄清一下吗? – 2013-02-15 04:49:34

+0

由于您的最后一个参数是'shell = True',您应该自己为整个命令构建字符串:'cmd ='echo xsxsxs | sudo“./license.exe”{} {} {}'。format(ps,var1,var2)'then'subprocess.call(cmd,shell = True)' – ford 2013-02-15 07:12:51

相关问题