2013-02-10 227 views
0

我試圖使用命令替換從一個Python腳本構建Linux命令,但我不能夠得到以下簡單的例子來工作:蟒蛇命令替換命令

LS="/bin/ls -l" 
FILENAME="inventory.txt" 

cmd = "_LS _FILENAME " 
ps= subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) 
output = ps.communicate()[0] 
print output 

謝謝!

JB

回答

1

使用string substitution

cmd = '{} {}'.format(LS, FILENAME) 

或(在python2.6的):

cmd = '{0} {1}'.format(LS, FILENAME) 

import subprocess 
import shlex 

LS="/bin/ls -l" 
FILENAME="inventory.txt" 

cmd = '{} {}'.format(LS, FILENAME)  
ps = subprocess.Popen(shlex.split(cmd), 
         stdout = subprocess.PIPE, 
         stderr = subprocess.STDOUT) 
output, err = ps.communicate() 
print(output) 

或者,使用sh module

import sh 
FILENAME = 'inventory.txt' 
print(sh.ls('-l', FILENAME, _err_to_out=True)) 
+0

這非常好用。出於某種原因,我認爲Python的命令替換將在相同的標題下,而不是格式。謝謝! – JamesB 2013-02-10 18:14:35