如何在python中提供输入流?

时间:2013-01-23 10:22:00

标签: python

我通过python os模块在Linux中卸载一些软件包,比如

def uninstallZdev():
    print 'Uninstallation as a Super User'
    system('apt-get remove xxx')

uninstallPackage()

但删除包问一样

此操作后,将释放2,621 kB磁盘空间。 你想继续[Y / n]吗? 如何通过python

在程序中给出Y.

2 个答案:

答案 0 :(得分:4)

配置apt-get不要询问(请参阅apt-get man page

apt-get --assume-yes remove xxx

对于无法配置的工具,请使用pexpect来指导该过程。 pexpect允许您监听子流程的输出,并根据简单的API发送输入:

import pexpect

ag = pexpect.spawn('apt-get remove xxx')
ag.expect('Do you want to continue')
ag.send('Y')
ag.wait()
ag.close()

答案 1 :(得分:0)

使用-y自动执行apt-get。因此,您不必模拟" y" -press。

顺便说一句,我建议使用子进程模块,特别是如果您正在计划使用stdin / stdout。

并且:小心!你似乎以root用户或sudo运行它。如果xxx由于某种原因恰好是libc-bin,那么您可以恢复系统。