如何在python脚本中使用apt时从stdout中排除特定的消息?

时间:2017-11-07 06:23:01

标签: python debian

我收到此消息:“警告:apt没有稳定的CLI界面。在脚本中请谨慎使用。”

在一个简单的脚本中

process = subprocess.Popen(['apt', 'upgrade', '-y'], stdout=subprocess.PIPE)

从python子进程运行apt时如何删除那个恼人的警告?我不介意其余的输出,我只想摆脱警告。

编辑:

我正在迭代输出,以便我可以从apt获得实时输出。如何从那里删除它?

with open('test.log', 'w') as f:
        process = subprocess.Popen(['apt', 'upgrade', '-y'],
                                   stdout=subprocess.PIPE,  stderr=subprocess.PIPE)
        for line in iter(process.stdout.readline, ''):
                sys.stdout.write(line)
                f.write(line)

1 个答案:

答案 0 :(得分:1)

该消息通过stderr发送。我会通过管道来捕获它,就像你使用stdout一样:

>>> process = subprocess.Popen(['apt', 'search', 'python'], stdout=subprocess.PIPE,
...                                                         stderr=subprocess.PIPE)
>>> stdout, stderr = process.communicate()
>>> stderr
'\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n'