os.popen()
1.os.popen() 方法用于從一個命令打開一個管道
2.popen()方法語法格式如下:
os.popen(command[, mode[, bufsize]])
3.參數(shù)
command -- 使用的命令材原。
mode -- 模式權(quán)限可以是 'r'(默認) 或 'w'。
bufsize -- 指明了文件需要的緩沖大新笙颉:0意味著無緩沖;1意味著行緩沖;其它正值表示使用參數(shù)大小的緩沖(大概值,以字節(jié)為單位)卵慰。負的bufsize意味著使用系統(tǒng)的默認值佛呻,一般來說裳朋,對于tty設備吓著,它是行緩沖;對于其它文件暖眼,它是全緩沖。如果沒有改參數(shù)诫肠,使用系統(tǒng)的默認值欺缘。
os.read()
1.os.read() 方法用于從文件描述符 fd 中讀取最多 n 個字節(jié),返回包含讀取字節(jié)的字符串谚殊,文件描述符 fd對應文件已達到結(jié)尾, 返回一個空字符串。
2.read()方法語法格式如下:
os.read(fd,n)
3.參數(shù)
fd -- 文件描述符嫩絮。
n -- 讀取的字節(jié)。
代碼
#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,既上一段信息的最后一段數(shù)字
#注意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('未發(fā)現(xiàn)進程怨愤,無需關(guān)閉')
效果
1.先開啟個進程
2.運行下代碼
清除了進程