[英]Using a python script to run a shell script (containing a make file and an executable for fortran)
我正在嘗試使用python執行shell腳本。 shell腳本包含變量(我想在python腳本本身中設置),make文件和fortran可執行文件。 是否可以使用python完成? 我嘗試了以下python代碼,但不幸的是它不起作用:
import subprocess import os import shutil
os.environ['FLUID'] ="MDM"
os.environ['TTYPE'] = str(0)
os.environ['FLIBRARY'] = "RefProp"
HSPACE=[0.01, 0.009, 0.008, 0.007]
os.chdir(tmesh_dir)
subprocess.call(['./testfile3', str(FLUID), str(TTYPE), str(FLIBRARY)]
+ [str(n) for n in HSPACE])
testfile3是一個shell腳本,具有以下內容:
fluid=$1; shift
ttype=$2; shift
flibrary=$3; shift
hspace=( "$@" )
make clean
make -j2
./vls.exe <<<"$fluid, $flibrary"
for i; do
cd Db
awk -v a="$i" 'NR==8 {$1=" " a }1' spacingcontrol.vls > tmp.vls && mv tmp.vls spacingcontrol.vls
awk -v b="$i" 'NR==8 {$2=" " b " "}1' spacingcontrol.vls > tmp.vls && mv tmp.vls spacingcontrol.vls
done
cd ..
umg/mcrv.exe
umg/bgrid.exe
umg/umg2d.exe
#make clean
您可以使用subprocess.Popen
,它允許您將一組環境變量傳遞給流程。 您也可以為子流程指定工作目錄,而不用更改當前目錄。
env = dict(os.environ)
env['FLUID'] ="MDM"
env['TTYPE'] = str(0)
env['FLIBRARY'] = "RefProp"
HSPACE=[0.01, 0.009, 0.008, 0.007]
cmd = ['./testfile3', env['FLUID'], env['TTYPE'], env[FLIBRARY]]
cmd.extend([str(n) for n in HSPACE])
p = subprocess.Popen(cmd, env=env, cwd=tmesh_dir)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.