我想在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