从python中运行unix命令获取实时输出
我使用以下代码运行unix命令:从python中运行unix命令获取实时输出,python,shell,Python,Shell,我使用以下代码运行unix命令: cmd = 'ls -l' (status,output) = commands.getstatusoutput(cmd) print output 但问题是,它仅在命令完成后显示输出,但我希望看到随着执行的进行打印输出。 ls-l只是一个伪命令,我在实际程序中使用了一些复杂的命令 谢谢 因为这是家庭作业,下面是要做的事情,而不是完整的解决方案: 使用subprocess.Popen类调用可执行文件。请注意,构造函数使用一个命名的stdout参数,并查看sub
cmd = 'ls -l'
(status,output) = commands.getstatusoutput(cmd)
print output
但问题是,它仅在命令完成后显示输出,但我希望看到随着执行的进行打印输出。
ls-l
只是一个伪命令,我在实际程序中使用了一些复杂的命令
谢谢 因为这是家庭作业,下面是要做的事情,而不是完整的解决方案:
subprocess.Popen
类调用可执行文件。请注意,构造函数使用一个命名的stdout
参数,并查看subprocess.PIPE
Popen
对象的标准管道,以避免死锁。请参阅线程化
模块Popen.Wait
)thread.join
)。请注意,这很可能在子流程完成后发生如果您需要更多帮助,请描述您的确切问题。除非Python中有我不知道的更简单的方法,否则我相信您将不得不深入研究稍微复杂一些的函数
基本上,其想法是分叉您的进程,让子进程执行您的命令,同时将其标准输出重定向到将由父进程读取的管道。您很容易找到这种模式。如果未连接到tty,大多数程序将使用块缓冲输出,因此您需要运行连接到pty的程序;最简单的方法是使用
for line in pexpect.spawn('command arg1 arg2'):
print line