2012-06-05 104 views
1
#!/usr/bin/python 

import os 
import shutil 
import commands 
import time 
import copy 

name = 'test' 

echo name 

我有一個簡單的Python腳本就像上面那樣。當我嘗試執行它時,我嘗試輸出名稱變量時出現語法錯誤。如何在Python腳本中執行UNIX命令

+3

您應該至少指定您正在獲取的確切錯誤消息。 – C2H5OH

+2

爲什麼你期望像Python那樣支持泛型unix命令('echo'),就好像它是一個公認的Python語句一樣? – poke

+0

@ C2H5OH它只是產生一個通用的「語法錯誤」,因爲'echo'不是一個關鍵字,它希望在可能的變量名稱(例如賦值)後發生其他事情。 – poke

回答

9

不能使用,如果他們Python代碼在你的Python腳本UNIX命令,echo name導致一個語法錯誤,因爲echo沒有在Python內置的語句或功能。相反,使用print name

要運行UNIX命令,您需要創建一個運行該命令的子進程。最簡單的方法是使用os.system(),但subprocess模塊更可取。

8

您也可以使用子流程模塊。

import subprocess 
proc = subprocess.Popen(['echo', name], 
          stdin = subprocess.PIPE, 
          stdout = subprocess.PIPE, 
          stderr = subprocess.PIPE 
         ) 

(out, err) = proc.communicate() 
print out 

閱讀:http://www.doughellmann.com/PyMOTW/subprocess/