我需要来自scutil
命令的信息。当我在终端上运行scutil -d -r xyz.com
时。我可以看到几行输出。
但是当我执行scutil -d -r xyz.com > file.txt
时,只有最后一行命令输出可以在文件中看到flags = 0x00000002 (Reachable)
。
我从python运行这个命令,我需要这个命令的全部内容。 我在python中运行的方式是:
import os
output = os.popen('scutil -r -d yahoo.com').read()
print output
输出为:
flags = 0x00000002(Reachable)
但我也需要这里命令的所有输出。如果有任何解决方法,请告诉我。
答案 0 :(得分:0)
scutil
向stderr
打印信息,尝试使用&> file.txt
代替> file.txt
在python中尝试使用:
import commands
print commands.getstatusoutput("scutil -d -r xyz.com")
答案 1 :(得分:0)
os.popen
is deprecated since 2.6
文档提供了使用os.popen
模块替换subprocess
的入门知识:
http://docs.python.org/library/subprocess.html#replacing-os-popen-os-popen2-os-popen3
应用于您的代码的示例:
import subprocess
my_process = subprocess.Popen('scutil -r -d yahoo.com',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = my_process.communicate()
print out
print err
答案 2 :(得分:0)
您可以使用subprocess.check_output("scutil -d -r xyz.com", stderr=subprocess.STDOUT, shell=True)
import subprocess
output = subprocess.check_output("scutil -d -r xyz.com", stderr=subprocess.STDOUT, shell=True)
print(output)
您应该注意的check_output
命令有两件事情发生:
stderr=subprocess.STDOUT
将错误输出流传输到标准输出shell=True
通过shell执行命令。这使您可以访问运行shell进程的相同环境。