Python操作系统不返回与command promp相同的数据

2024-09-30 10:31:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个脚本,使用netstat检查windows机器上的临时端口。当我在空闲的Windows上测试这个脚本时,它返回一个0。你知道吗

下面是我正在测试的代码:

import os
oPorts=os.system('netstat -ano | find /i \"estab\" /c')
print(oPorts)

下面是我尝试在Python中运行时发生的情况:

os.system Python Script]1

但是,当我在命令提示符下运行相同的东西时,输出如下。你知道吗

cmd prompt output

那么,当Windows主机上显然有311个已建立的连接时,Python为什么输出0呢?我错过了什么?你知道吗


Tags: 端口代码import脚本机器oswindowsfind
3条回答

下面的代码正好给出了我想要的输出。你知道吗

import subprocess

established = (subprocess.Popen('netstat -ano | find /i \"estab\" /c',
                               stdout=subprocess.PIPE,
                               shell=True).communicate()[0].decode('utf-8').strip())

我不确定check_outputPopen之间的区别,但是Popen.communicate()[0].decode('utf-8').strip())是关键。你知道吗

os.system函数返回命令。不是命令的输出。您应该改用subprocess模块。然后可以捕获输出。你知道吗

可执行进程的返回值与其输出不相同。按照惯例,进程返回0表示成功,其他任何值表示失败。从命令行运行命令时,通常不会打印返回值。要捕获输出,需要重定向stdout。你知道吗

相关问题 更多 >

    热门问题