【问题标题】:subprocess.call without command writing to the console [duplicate]subprocess.call 没有命令写入控制台[重复]
【发布时间】:2021-04-12 06:04:46
【问题描述】:

我目前正在编写一个 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"

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    可以使用内置os模块的devnull属性:

    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"
    

    【讨论】:

    • 这可行,但你不小心写了 STOUT 而不是 STDOUT :)
    猜你喜欢
    • 2018-12-07
    • 2014-07-18
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多