首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Popen('ping URL').communicate()可以在Windows下运行,而不能在Ubuntu中运行?

在Windows中,Popen('ping URL').communicate()可以运行,而在Ubuntu中不能运行的原因是由于两个操作系统的命令行环境以及ping命令的实现方式有所不同。

Windows下的命令行环境是基于命令提示符(Command Prompt)或者Windows PowerShell,而Ubuntu则使用的是终端(Terminal)。

在Windows中,Popen('ping URL').communicate()命令会执行ping命令,该命令可以通过发送网络数据包来检查与目标URL的连接情况。Windows系统内置了ping命令,并将其放置在系统路径中,因此在Windows命令行环境中,可以直接运行ping命令。

然而,在Ubuntu中,并没有内置ping命令,而是通过安装iputils-ping软件包来实现相同的功能。因此,如果在Ubuntu中使用Popen('ping URL').communicate()命令,系统会提示找不到ping命令的错误。

解决这个问题的方法是在Ubuntu中安装iputils-ping软件包。可以通过以下命令来安装:

代码语言:txt
复制
sudo apt-get update
sudo apt-get install iputils-ping

安装完毕后,再次运行Popen('ping URL').communicate()命令,就能够在Ubuntu中成功执行ping命令了。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):腾讯云提供的弹性计算服务,可根据需求快速创建、部署和管理虚拟服务器。详细信息请参考:云服务器(CVM)
  • 云数据库 MySQL 版(CMYSQL):腾讯云提供的MySQL数据库服务,具备高可靠性、高可用性和高性能,可满足各种规模的应用需求。详细信息请参考:云数据库 MySQL 版(CMYSQL)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python—subprocess、gl

像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。Python,我们通过标准库的subprocess包来fork一个子进程,并运行一个外部的程序。...subprocess.check_output(); shell默认为False,Linux,shell=False时, Popen调用os.execvp()执行args指定的程序;shell=True...,不是保存于内存 例1: #!...child2的输出文本也被存放在PIPE,直到communicate()方法从PIPE读取出PIPE的文本;communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成...;child2.communicate()相当于child2.write()、child2.close()、child2.read()这个三个方法 二、glob模块 python的shell通配符,用它可以查找符合特定规则的文件路径名

1.5K20
  • Python调用外部系统命令

    一般情况我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。...windows平台下,默认的shell由COMSPEC环境变量来指定。...preexec_fn 只Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用cwd设置子进程当前目录env env是字典类型,用于指定子进程的环境变量...Universal_newlines 不同操作系统,文本的换行符是不一样的。如:windows用’/r/n’表示换,Linux用 ‘/n’。...对于复杂的命令考虑使用subprocess.Popen()完成,如果仅是简单的命令执行,可以使用os.system()完成,如调用windows的暂停程序命令os.system('pause')。

    25820

    Python 执行系统命令

    system函数可以将字符串转化成命令服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程系统上执行命令行,子进程的执行结果无法影响主进程。...192.168.1.101") #使用a接收返回值 print(a) # 理论上command是一个字符串,但实际看command还是得变为字节数组 # 当命令存在中文时可能会报编码错误,此时可以自己给命令编一码...一些复杂场景,我们需要将一个进程的执行输出作为另一个进程的输入。另一些场景,我们需要先进入到某个输入环境,然后再执行一系列的指令等。...3、Popen.communicate(input=None):与子进程进行交互。向stdin发送数据,或从stdout和stderr读取数据。可选参数input指定发送到子进程的参数。...windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。 6、Popen.kill():杀死子进程。

    1.6K10

    Python调用系统命令的六种方法

    作为胶水语言,Python可以很方便的执行系统命令,Python3常用的执行操作系统命令有os.system()、os.popen()、subprocess.popen()、subprocess.call...os.system() system函数可以将字符串转化成命令服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程系统上执行命令行,子进程的执行结果无法影响主进程。...0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 2ms,最长 = 8ms,平均 = 3ms 0 Process finished with exit code 0 也可以...linux系统运行 import os os.system('cd /home && mkdir test') 执行多条命令可以使用&&连接 os.popen(command,mode) 这种调用方式是通过管道的方式来实现...用法:os.popen(command[, mode[, bufsize]]) os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程的输出内容

    3.8K20

    Python Subprocess库详解

    它提供了一个强大灵活的接口,使得你可以Python启动新的进程、连接它们的输入和输出,并与它们进行交互。本教程将介绍Subprocess库的基本概念、用法和一些常见的应用场景。...超时处理 实际应用,我们可能希望设置子进程的最长运行时间,以避免因子进程无法正常退出导致父进程一直等待。...通过使用shell=True参数,确保Windows可以执行带有空格的命令。...使用subprocess.Popen进行后台执行 有时候,你可能希望将子进程放入后台执行,阻塞父进程。可以使用subprocess.Popen的start_new_session参数实现这一点。...使用subprocess.Popen的start_new_session参数进行后台执行 有时候,你可能希望将子进程放入后台执行,阻塞父进程。

    2K21

    Python标准库06 子进程 (subprocess包)

    Python调用wget程序。从这个意义上来说,subprocess的功能与shell类似。 subprocess以及常用的封装函数 当我们运行python的时候,我们都是创建并运行一个进程。...Python,我们通过标准库的subprocess包来fork一个子进程,并运行一个外部的程序(fork,exec见Linux进程基础)。...这个时候,我们使用一整个字符串,不是一个表来运行子进程。Python将先运行一个shell,再用这个shell来解释这整个字符串。...子进程的文本流控制 (沿用child子进程) 子进程的标准输入,标准输出和标准错误也可以通过如下属性表示: child.stdin child.stdout child.stderr 我们可以Popen...shell的功能(比如利用文本流连接各个应用),就可以Python实现。

    2.8K60

    Python subprocess与命令行交互

    虽然可以使用 subprocess.run一个线程启动一个子进程,并在另一个线程与其交互。 但是,当完成了子进程之后,要完全终止它将变得非常棘手。...使用底层的 Popen API 异步启动进程(意味着 Popen 立即返回,子进程在后台运行)。...Linux 进程通常在交互模式进行行缓冲,否则进行全缓冲。 很少有进程是完全不缓冲的。 因此,在看来,建议小于一行的块读取 stdout。 真的,千万别这么做。...如果运行这个示例,您将注意到子进程的 stdout 是实时报告的,不是最后报告一个错误。...注意,也可以在这里使用communicate不是等待来捕获 stderr 输出。 使用非阻塞读线程和可阻塞线程进行交互 最后的示例演示了一个稍微更高级的场景。

    7.5K22

    Python模块之subprocess

    二 基础知识 Python2.4引入subprocess模块来管理子进程,可以像Linux 系统执行shell命令那样fork一个子进程执行外部的命令,并且可以连接子进程的output/input...,使用subprocess包的函数创建子进程执行命令的时候,需要考虑 1) 创建子进程之后,父进程是否暂停,并等待子进程运行。...当shell=True, 它将args看作是一个字符串,不是一个序列。Unix系统,且 shell=True时,shell默认使用 /bin/sh....Popen.communicate(input=None) 与子进程进行交互。向stdin发送数据,或从stdout和stderr读取数据。可选参数input指定发送到子进程的参数。...那么坑爹的问题来了:当你要使用Python的subprocess.Popen实现命令行之间的管道传输,同时数据源又非常大(比如读取上GB的文本或者无尽的网络流)时,官方文档建议用wait,同时communicate

    1.9K10

    Python,Shell 和 三个标准文件

    第二种场景:ping zhihu.com 它会持续的输出结果,并不会退出(当然可以加 -t n 来指定 n 次之后结束退出,这样就属于场景一了,本文我们指定 n) 相信这两种情况已满足了读者 90%...实战 比较一比较好记忆: ls -a (场景一) import subprocess def run_cmd(cmd): return subprocess.Popen( cmd...False 的时候,我们需要把命令按空格使用逗号分隔开来(即 list 数据结构)传给 cmd 参数(目的是让 Python 清楚这条命令的所有细节),代码的例子就是使用这种; True 的时候只需要把命令一股脑...communicate() returns a tuple (stdout, stderr). 翻译一: 与进程进行交互:将数据发送到 stdin。...这里其实是一个同步的过程,进程终止后才会返回所读取到的数据(进程终止,文件自然也结尾了),也就是 communicate() 方法直接使命令执行变为了同步,执行完成就一直阻塞。

    1.4K60

    PING问题解决方法_20190305

    ③ 验证Windows和“正在运行Linux的开发板”互通(第②、③步,只要做一个就可以): 类似第①步,Windows命令行PING开发板的IP。...② 验证Windows和“正在运行uboot的开发板”互通(第②③步,只要做一个就可以): 注意:UBOOT不回应PING数据,所以你是PING不通UBOOT的, 只能在UBOOT去PING别的电脑...③ 验证Windows和“正在运行Linux的开发板”互通(第②③步,只要做一个就可以): 类似第①步,Windows命令行PING开发板的IP。...② 验证Windows和“运行uboot的开发板”互通(第②、③步,只要做一个就可以): 注意:UBOOT不回应PING数据,所以你是PING不通UBOOT的, 只能在UBOOT去PING别的电脑。...③ 验证Windows和“运行Linux的开发板”互通(第②③步,只要做一个就可以): 类似第①步,Windows命令行PING开发板的IP。

    2.5K10

    python执行DOS命令的3种方法小

    一般情况我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。...参数Universal_newlines:不同操作系统,文本的换行符是不一样的。如:windows用’/r/n’表示换,Linux用 ‘/n’。...参数startupinfo与createionflags只windows用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。...向stdin发送数据,或从stdout和stderr读取数据。可选参数input指定发送到子进程的参数。 Communicate()返回一个元组:(stdoutdata, stderrdata)。...windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。 Popen.kill() 杀死子进程。

    2.1K20

    python 标准类库-并行执行之subprocess-子进程管理

    可以通过使用stderr=subprocess.STDOUT结果捕获标准错误。...类似Unix上使用os.execvp(),Windows上使用CreateProcess()函数。 args 参数值为字符串、序列。默认的,如果args是个序列,程序会执行args第一项。...(args) Windows上,如果args为序列,那么将会按照以下规则进行转换为一个字符串,因为后台函数 CreateProcess() 的操作依赖字符串。...如果进程timeout(单位 秒)之后依然没终止,则抛出TimeoutExpired 异常,可以捕获该异常并再次尝试等待。...如果进程timeout(单位 秒)之后依然没终止,则抛出TimeoutExpired 异常,(Python3.3.2发丝。捕获该异常并重试comunicate,不会丢失任何输出。

    4.1K20
    领券