如何在 python 中自动回答是?

How can I automatically answer yes in python?

假设我有一个稍后运行 apt upgrade -y 的脚本,我将需要针对不同的软件包手动回答这些问题。我怎样才能自动做到这一点?

正在设置 virtualbox-guest-x11 (5.0.32-dfsg-0ubuntu1.16.04.2) ...

Configuration file '/etc/X11/Xsession.d/98vboxadd-xclient'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** 98vboxadd-xclient (Y/I/N/O/D/Z) [default=N] ?  conffile prompt detected: /etc/X11/Xsession.d/98vboxadd-xclient /etc/X11/Xsession.d/98vboxadd-xclient.dpkg-new

我的脚本能够检测到配置提示,但我应该如何自动回答是?

通过使用 python-apt api 我可以通过此功能检测到提示

def conffile(self, current, new):
    print " conffile prompt detected: %s %s" % (current, new)

    """(Abstract) Called when a conffile question from dpkg is detected."""

因为(根据问题下的评论)您正在使用 Python-APT, the first way that comes to mind is using the Configuration class 来设置 conf['APT::Get::Assume-Yes'] = True

使用yes命令:

yes Y | apt ...

对于所有像我一样迷路的人,答案是:

import apt_pkg

apt_pkg.init_config()
apt_pkg.config.set("DPkg::Options::", "--force-confnew")

这将使 apt 自动接受新的配置文件。