今天在使用python時,發現需要直接呼叫系統中已經安裝好的程式,查了一些資料,在這裡稍微做一點總結與大家分享,如有不合適的地方,請大家批評指正。
在python中,我們常常需要呼叫外部程式,在python的文件中,對各種呼叫方式做了說明,主要有以下幾種:
os.system
os.spawn*
os.popen*
popen2.*
commands.*
subprocess
由於python的發展,subprocess有取代上面各種方式的趨勢。在這裡主要介紹subprocess的使用吧。
1. 使用subprocess模組的call方法
from subprocess import call
call(["ls", "-l"])
使用subprocess模組的好處是,程式以子程序的模式執行,可以捕獲到程序的執行狀態和返回的結果
2. 使用subprocess模組的popen方法
from subprocess import popen, pipe
cmd = " dir" #windows 中
p = popen(cmd , shell=true, stdout=pipe, stderr=pipe)
out, err = p.communicate()
print "return code: ", p.returncode
print out.rstrip(), err.rstrip()
或者使用下面的方法獲得命令列執行返回的結果:
import subprocess
com = '"f:\\file path\\a.exe" -c 1 "f:\\file path\\inputfile.dat" "f:\\file path\\outfile"'
p = subprocess.popen(com, shell=true,stdout=subprocess.pipe, stderr=subprocess.stdout)
for line in p.stdout.readlines():
print line,
retval = p.wait()
remark: 在上面片段中,com用了單引號加雙引號,這是因為路徑中file path 之間有空格,對於無空格的路徑名可以取消雙引號。
這篇文章針對subprocess做了比較詳細的介紹,可以看看。
C 呼叫命令列
開關 c表示執行完命令就退出 system.diagnostics.process cmd system.diagnostics.process.start cmd.exe c xcopy c test1 c test2 y q s cmd.waitforexit system.diagnostic...
C 呼叫命令列
開關 c表示執行完命令就退出 system.diagnostics.process cmd system.diagnostics.process.start cmd.exe c xcopy c test1 c test2 y q s cmd.waitforexit system.diagnostic...
system呼叫命令列命令而不顯示命令列視窗
system呼叫命令列命令而不顯示命令列視窗 通常用system呼叫命令列命令時都會彈出黑底白字的命令列視窗,下面的 可以不顯示彈出的命令列視窗。如下 view plain pragma comment linker,subsystem windows entry maincrtstartup 設定...