subprocess.call 没有命令写入控制台
subprocess.call without command writing to the console
我目前正在编写一个 python 程序,其中包含一个部分,它会在其中对目标计算机执行 ping 操作,如果有响应,则会更改变量,但是当我执行代码时,ping 命令会写入控制台(我不想要)。
我已经检查了 ping 命令的参数,看是否有什么东西可以让它保持沉默,但没有找到任何东西。我可以做些什么来阻止命令回显到控制台吗?
我的代码如下:
if platform.system().lower() == "windows":
parameter = "-n"
else:
parameter = "-c"
exitCode = subprocess.call(f"ping {parameter} 1 {activeConnections[ip][0]}")
if (exitCode == 0):
activeConnections[ip][3] = "T"
activeConnections
是一个字典,如果ping成功,一个值从"F"
变为"T"
。
您可以使用 devnull
attribute of the built-in os
模块:
from os import devnull
from subprocess import STDOUT
# Your code
if platform.system().lower() == "windows":
parameter = "-n"
else:
parameter = "-c"
with open(devnull) as DEVNULL:
exitCode = subprocess.call(f"ping {parameter} 1 {activeConnections[ip][0]}", stdout=DEVNULL, stderr=STDOUT))
if (exitCode == 0):
activeConnections[ip][3] = "T"
我目前正在编写一个 python 程序,其中包含一个部分,它会在其中对目标计算机执行 ping 操作,如果有响应,则会更改变量,但是当我执行代码时,ping 命令会写入控制台(我不想要)。
我已经检查了 ping 命令的参数,看是否有什么东西可以让它保持沉默,但没有找到任何东西。我可以做些什么来阻止命令回显到控制台吗?
我的代码如下:
if platform.system().lower() == "windows":
parameter = "-n"
else:
parameter = "-c"
exitCode = subprocess.call(f"ping {parameter} 1 {activeConnections[ip][0]}")
if (exitCode == 0):
activeConnections[ip][3] = "T"
activeConnections
是一个字典,如果ping成功,一个值从"F"
变为"T"
。
您可以使用 devnull
attribute of the built-in os
模块:
from os import devnull
from subprocess import STDOUT
# Your code
if platform.system().lower() == "windows":
parameter = "-n"
else:
parameter = "-c"
with open(devnull) as DEVNULL:
exitCode = subprocess.call(f"ping {parameter} 1 {activeConnections[ip][0]}", stdout=DEVNULL, stderr=STDOUT))
if (exitCode == 0):
activeConnections[ip][3] = "T"