![](/img/trans.png)
[英]Running a CMD command with Python, printing the output AND getting the output as variable
[英]Getting live output from running unix command in python
我正在使用下面的代碼來運行Unix命令:
cmd = 'ls -l'
(status,output) = commands.getstatusoutput(cmd)
print output
但是問題在於,它僅在命令完成后才顯示輸出,但是我想在執行過程中看到輸出。 ls -l
只是偽指令,我在實際程序中使用了一些復雜的指令。
謝謝!!
由於這是家庭作業,因此這里是代替完整解決方案的處理方法:
使用subprocess.Popen
類來調用可執行文件。 請注意,構造函數采用一個命名的stdout
參數,並查看subprocess.PIPE
。
在單獨的線程中從Popen
對象的STDOUT管道讀取,以避免死鎖。 請參閱threading
模塊。
等待子進程完成(請參閱Popen.wait
)。
等待直到線程完成對輸出的處理(請參閱Thread.join
)。 注意,這很可能在子過程完成之后發生。
如果您需要更多幫助,請描述您的確切問題。
如果大多數程序未連接到tty,它們將使用塊緩沖輸出,因此您需要運行連接到pty的程序。 最簡單的方法是使用pexpect:
for line in pexpect.spawn('command arg1 arg2'):
print line
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.