os.popen()
1.os.popen() 方法用于从一个命令打开一个管道
2.popen()方法语法格式如下:
os.popen(command[, mode[, bufsize]])
3.参数
command -- 使用的命令。
mode -- 模式权限可以是 'r'(默认) 或 'w'。
bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。
os.read()
1.os.read() 方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
2.read()方法语法格式如下:
os.read(fd,n)
3.参数
fd -- 文件描述符。
n -- 读取的字节。
代码
#coding=utf-8
import os
import re
#获取到8080端口的信息
#TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21808
ss=os.popen('netstat -aon|findstr "8080" ').read()
#print(ss)
if ss:
#利用正则表达式,获取PID,既上一段信息的最后一段数字
#注意answer为list
key = re.compile(r'TCP.*?LISTENING.*?(\d+)',re.S)
anwser = re.findall(key,ss)
#杀掉PID为i的进程
for i in anwser:
os.system('taskkill /f /pid %s' % i)
else:
print('未发现进程,无需关闭')
效果
1.先开启个进程
2.运行下代码
清除了进程