標籤:python
import subprocess#執行命令,返回命令執行狀態 , 0 or 非0retcode = subprocess.call(["free","-m"]) #傳回值可判斷執行是否正確,命令執行結果直接返回到螢幕#執行命令,如果命令結果為0,就正常返回,否則拋異常result = subprocess.check_call(["ls","-l"])#執行命令,並返回結果,注意是返回結果,不是列印,下例結果返回給resres = subprocess.check_output(["ls","-l"])#若shell = true, 則shell 參數以字串形式給出,否則,則以序列的形式給出#python3執行shell命令的幾種方式#1.用os.system(cmd) 可以擷取命令執行後的傳回值,但是擷取不了命令的輸出內容import os;return_code=os.system(‘ls -la‘);print(return_code);#2.用os.popen(cmd) 可以擷取命令的輸出內容,但是擷取不了命令執行後的傳回值import os;import sys;output=os.popen(‘ls -l‘);out=output.readlines();for i in out: print(i.strip());#3.用subprocessimport os;import sys;import subprocess;import codecs;#可以直接將輸出寫入到檔案output_file=codecs.open(‘abc.txt‘,‘w‘,‘utf-8‘);return_code=subprocess.call([‘ls‘,‘-l‘],stdout=output_file);output_file.close();print(return_code);#也可以先將輸出先儲存為string變數,output=subprocess.check_output([‘ls‘,‘-l‘]); #如果命令執行的傳回值不為0,則會拋出CalledProcessError的錯誤print(output.decode(‘utf-8‘));#再將string變數寫入到檔案output_file=codecs.open(‘abc.txt‘,‘w‘,‘utf-8‘);output_file.write(output.decode(‘utf-8‘));output_file.close();
本文出自 “八英裡” 部落格,請務必保留此出處http://5921271.blog.51cto.com/5911271/1897550
Python之路35-subprocess模組和Python3中常用執行shell命令方法