【发布时间】:2016-09-27 09:18:02
【问题描述】:
谁能告诉我我做错了什么,使用python子进程库在windows上执行netsh命令时没有显示输出?
例子:
p = subprocess.run('netsh dhcp show server', shell=True, stdout=subprocess.PIPE)
print(p.stdout.decode('utf-8'))
输出:空字符串
当我执行一些其他命令时,echo Hi,我得到一个输出:
p = subprocess.run('echo Hi', shell=True, stdout=subprocess.PIPE)
print(p.stdout.decode('utf-8'))
我的目的是获取我们的 DHCP 服务器列表并解析输出。
谢谢!
【问题讨论】:
-
我根本不了解 Windows,附近也没有 Windows 盒子,但会不会是 1.
netsh在这种情况下实际上并没有给出任何输出,你有吗?在cmd中检查了吗?和 2.netsh实际上将信息打印到 stderr,所以你也必须捕获它?所以你可以尝试用stderr=subprocess.STDOUT调用run() 看看它是否有效。 -
你说得对,如果我在 cmd 中执行该命令,则该命令有效,但是当我尝试使用 Pycharm 终端或在 cmd 中运行脚本时,没有返回任何内容。
-
那么,您是否尝试过将标准错误重定向到标准输出?
标签: python subprocess dhcp netsh