2012-02-25 37 views
1

我有一個字符串叫做variable,需要做subprocess相當於os.system。我試圖找到一種方法來做到這一點,但只發現:Python 3:使用子進程而不是os.system

variable2 = subprocess.Popen(args, stdout=subprocess.PIPE) 
print variable2.communicate()[0] 

但是,我無法理解如何使用它。我如何實現我的目標?

+0

這裏有什麼'args'?在Py3中,'print'是一個函數,而不是一個聲明。 – 2012-02-25 11:36:23

+0

代碼塊是複製/粘貼的,因爲我無法找到自己需要的方式,因此是問題所在。 – 2012-02-25 11:43:03

+0

可能的重複[在Python中,我如何使用子進程而不是os.system?](http://stackoverflow.com/questions/421206/in-python-how-i-do-use-subprocess-instead-of -os-system) – 2017-02-07 14:44:15

回答

2

該文檔提供了幾種舊式子流程創建功能的等價物。 os.system()解釋爲here

+0

os.startfile()還有一個等價物嗎? – 2012-02-25 11:51:52

+1

編號'os.startfile()'是圍繞'ShellExecute()'的Windows特定包裝。 – 2012-02-25 11:56:28

1
In [4]: os.system('uname -a') 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[4]: 0 

In [8]: subprocess.call(['uname', '-a']) 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[8]: 0 
0

看那subprocess.callsubprocess.check_callsubprocess.check_output功能。如果您正在執行shell命令(如os.system所示),則可能需要傳遞shell=True,而不是明確指定可執行文件和一系列參數。