背景:subprocess是python官方推薦調用系統命令的模塊
import subprocess
subprocess最主要的兩個方法/類:
# 參數說明:stdin和stdout相當於一個管道。激活stdout變量后執行結果將被重定向到stdout這個文件中,激活stdin可以從這里輸入與子程序(用這個腳本執行系統命令再打開的程序)交互的命令。
注意:要想激活這兩個變量必須給他們賦予一個模塊指定的變量"subprocess.PIPE"
# shell:如果此變量被設為True,則會調用系統默認shell(cmd/bash)執行系統命令,如果設為False則用python解釋器自己的shell執行命令。
# timeout:執行命令后的等待時間,超時則停止繼續往下執行
# stderr:保存錯誤信息
subprocess.run('此處寫操作系統的命令', *,stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, encoding=None, errors=None)
subprocess.Popen('此處寫操作系統的命令', *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, encoding=None, errors=None)
一、獲取執行操作命令后的結果:
bb = subprocess.run('ipconfig', stdout=subprocess.PIPE)
print(bb.stdout.decode('gbk')) ======> 執行結果就保存在stdout這個變量中
二、利用python代碼打開一個程序,並且和這個程序實現交互:
1、直接輸入交互命令方式:
bb = subprocess.Popen('python', stdout=subprocess.PIPE, stdin=subprocess.PIPE)
bb.stdin.write(b'print("123")')
bb.stdin.close()
print(bb.stdout.read())
2、從文件讀取交互命令方式
f = open('123') =====>此文件包含要執行的交互命令
bb = subprocess.run('python', stdout=subprocess.PIPE, stdin=f)
print(bb.stdout)