2013-02-15 137 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

相關問題