subprocess模塊windows系統命令和linux系統命令


windows系統
查看所有進程 tasklist

查找指定進程 tasklist | findstr pycharm

程序名稱 PID(大寫) 數量 大小
python exe 2640 console 1, 11052k

查看命令幫助信息 taskkill/?

殺死進程taskkill /PID 2640 命令后空格,PID大寫
強制殺死進程taskkill /F /PID 2640 (PID隨機分配,命令(空格)/F(空格)/PID(空格)2640

linux系統
查看進程 ps aux
查看指定進程 ps aux | grep python
kill -9 PID

要求:在python中接收用戶輸入的命令,在程序中執行系統命令

import os
while True:
cmd = input(">>>:").strip()
if not cmd:continue
res = os.system(cmd)
res = 0執行成功
res = 1執行失敗
os.system自動將結果打印到屏幕

os.system將結果打印到屏幕,無法管控

import subprocess
subprocess.Popen("dir") 報錯
subprocess.Popen("dir",shell = True)將結果打印到屏幕上
res = subprocess.Popen("dir",shell = True,stdout = subprocess.PIPE stderr = subprocess.PIPE)
stdout正確信息管道 stderr錯誤信息管道
res1 = res.stdout.read()正確信息,讀出為二進制
res2 = res.stderr.read()錯誤信息,讀出為二進制
因為是系統命令,所以二進制類型跟計算機系統相關,windows為gbk二進制,其他系統為utf8二進制
print("1",res1.decode("gbk"))
res3 = res.stdout.read()
print("2",res3)>>>輸出2,管道信息輸出1次就沒了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM