如何重定向 apt-file 更新输出



我想在python脚本中访问命令apt-file update的输出。不幸的是,我无法访问输出。我的尝试:

# Does not work:
popen_ret = subprocess.Popen([r'apt-file', 'update']), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = popen_ret.communicate()[0]
print output
# Without the "update" argument, it does work:
popen_ret = subprocess.Popen([r'apt-file'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = popen_ret.communicate()[0]
print output

我的猜测是问题出在 apt-file 本身,因为即使直接从控制台,这也创建了一个空文件:

apt-file update > delme.txt

apt-file > delme.txt

工作正常。

其他人似乎也有同样的问题(但没有解决方案):在 http://www.linuxquestions.org 提出的问题

apt-file是一个perl脚本,调用另一个perl脚本diffindex-download

运行apt-file update时产生的所有输出都由 diffindex-download 生成。

我不是perl专家,但显然这个脚本写给/dev/tty而不是stdout。您可以在此处阅读有关差异的信息:写入 STDOUT 和打开到 "/dev/tty" 的文件句柄有什么区别?

因此,如果您想重定向此脚本的输出,您应该这样做

script -c "apt-file update" output.log

相关内容

  • 没有找到相关文章

最新更新