使用python脚本运行shell脚本(包含make文件和fortran的可执行文件)

2024-06-01 20:08:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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

Tags: import脚本makeshiftosenvironshellexe
1条回答
网友
1楼 · 发布于 2024-06-01 20:08:37

您可以使用^{},它允许您将一组环境变量传递给进程。也可以指定子流程的工作目录,而不是更改当前目录。你知道吗

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)

相关问题 更多 >