程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python啟動Windows cmd(.bat)命令行並kill進程

編輯:Python

Python啟動Windows cmd(.bat)命令行並kill進程

有時候需要通過Python啟動一個Windows下的.bat文件,並在啟動時候加入一些命令選項,比如典型的網絡ping命令等。假設現在已經在Windows下寫好了一個.bat文件,需要由Python啟動,由Python接管這個.bat啟動的進程,並在某些時機下關閉這個進程。

import subprocess, psutil
import time
if __name__ == '__main__':
bat_path = r'.bat文件路徑 可以跟一些啟動參數選項'
# 正常創建一個cmd命令的進程,並在python的標准輸出管道窗口打印
process = subprocess.Popen(bat_path, shell=False, stdout=subprocess.PIPE)
# 將阻塞process的運轉,意味著process不會再輸出
time.sleep(3)
# 遞歸kill進程
pobj = psutil.Process(process.pid)
for c in pobj.children(recursive=True):
c.kill()
pobj.kill()

上面代碼在啟動一個.bat文件後,等待3秒再將這個.bat文件啟動的進程kill掉。.bat輸出的內容在Python的標准輸出裡面。

如果把process的創建改成:

process = subprocess.Popen(bat_path, creationflags=subprocess.CREATE_NEW_CONSOLE)

將會打開一個標准的Windows 控制台窗口(黑窗口)執行.bat。但仍可以在python代碼裡面通過pid句柄kill掉這個新開的Windows控制台窗口。

判斷進程是否在運行:

psutil.Process(process.pid).is_running()

判斷進程是否還存在:

psutil.pid_exists(進程的pid)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved