我正在linux中编写一个python程序。
在我的 python 程序中,我需要从 python 程序本身内部执行另一个工作目录中的 linux 命令。
示例:我的程序 test.py 在目录 dir1/dir2 中。
./wlst.sh 是 dir1/dir2/dir3/dir4 中的一个程序。
所以我需要从位于 dir2 的 python 程序执行 dir4 中的 .wlst.sh。
如何才能做到这一点?
我正在linux中编写一个python程序。
在我的 python 程序中,我需要从 python 程序本身内部执行另一个工作目录中的 linux 命令。
示例:我的程序 test.py 在目录 dir1/dir2 中。
./wlst.sh 是 dir1/dir2/dir3/dir4 中的一个程序。
所以我需要从位于 dir2 的 python 程序执行 dir4 中的 .wlst.sh。
如何才能做到这一点?
import subprocess
try:
output = subprocess.check_output(
[ './wlst.sh' ],
cwd='dir1/dir2/dir3/dir4',
stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as problem:
print "Error", problem.returncode
print " while calling subprocess, output was:", problem.output
else:
print "No error while calling subprocess, output was:", output
我不得不提一下,这捕获了子进程的所有输出,所以如果这个子进程做了很多很多(并且可能永远不会终止),这将填满你的 RAM。在这种情况下考虑使用check_call()
而不是check_output()
,也许将输出重定向到/dev/null
.
import subprocess
subprocess.call(['./wlst.sh'], cwd='dir1/dir2/dir3/dir4')
import os ,subprocess
os.chdir("dir3/dir4")
os.system("./wlst.sh")
否则你可以使用子进程
os.chdir("dir3/dir4")
subprocess.call("./wlst.sh")