【问题标题】:Supress OS command prompt popup in python [duplicate]在python中抑制OS命令提示符弹出[重复]
【发布时间】:2018-07-20 01:43:18
【问题描述】:
import subprocess, platform

def ping(host):
    args = "ping -n 1 " + host
    return subprocess.call(args) == 0

打印(ping(“www.google.com”))

我正在使用此代码来 ping 一个网站以测试它是启动还是关闭,这可以完美运行,但是它会导致命令提示符窗口短暂出现,这对于我正在处理的工作来说并不理想,所以我的问题是; 如何禁止此窗口出现在 ping 请求中(需要基于 Windows 的解决方案)

【问题讨论】:

  • subprocess.call(args,stdout=subprocess.DEVNULL) 用于 python 3
  • 使用这个时命令窗口仍然短暂出现?
  • 啊是的,通过,startupinfo 参数:code.activestate.com/recipes/…

标签: python ping


【解决方案1】:

要使用 ping 来了解地址是否在响应,请使用其返回值,即 0 表示成功。如果返回值不为 0,subprocess.check_call 将引发并出错。要抑制输出,请重定向 stdout 和 stderr。在 Python 3 中,您可以使用 subprocess.DEVNULL 而不是在块中打开空文件。

import os
import subprocess

with open(os.devnull, 'w') as DEVNULL:
    try:
        subprocess.check_call(
            ['ping', '-c', '3', '10.10.0.100'],
            stdout=DEVNULL,  # suppress output
            stderr=DEVNULL
        )
        is_up = True
    except subprocess.CalledProcessError:
        is_up = False

参考:Get output of system ping without printing to the console

【讨论】:

  • 不回答,只是标记为重复,因为它是一个并且您在他的回答中复制了 Davidsim 代码
  • 好的,会注意的
猜你喜欢
  • 2021-06-06
  • 2016-04-23
  • 1970-01-01
  • 2014-11-22
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多