如何使用Python 3.x在命令行中执行多个命令



谢谢大家。我正在写一个脚本执行多个命令在命令行。这是我整个剧本的一部分。

我核对了很多答案,但没有一个能解决我的问题。

我的命令是这样的

cd C:/Users/Bruce/Desktop/test
set I_MPI_ROOT=C:Program FilesfiremodelsFDS6binmpi
set PATH=%I_MPI_ROOT%;%PATH%
fds_local -o 1 -p 1 test.fds
python test.py

我试图使用subprocess.runos.system等。但它们不起作用。我不知道发生了什么。下面是我用过的一个例子。

file_path = "C:/Users/Bruce/Desktop/test"
cmd1 = 'cd ' + file_path
cmd2 = "set I_MPI_ROOT=C:/Program Files/firemodels/FDS6/bin/mpi"
cmd3 = "set PATH=%I_MPI_ROOT%;%PATH%"
nMPI = '-p {}'.format(1)
nOpenMP = '-o {}'.format(1)
cmd4 = "fds_local {} {} ".format(nMPI, nOpenMP) + file_name
cmd = '{} && {} && {} && {}'.format(cmd1, cmd2, cmd3, cmd4)
subprocess.Popen(cmd, shell=True)

我对子进程不是很熟悉。但是我已经花了一个星期的时间来解决这个问题。我都快疯了。有什么建议吗?

cmd需要是一个文本列表,就像你在shell上看到的那样,用空格分隔。如。ls -l/var/www"应该是cmd=['ls','-l','/var/www']

也就是说,cd最好使用os.chdir。Set最好通过向子进程调用提供环境字典来完成。多行最好是在shell脚本中放入几行(它可以接受参数),这样你就不必在python中搞砸了。

是一个例子。如果命令不在操作系统的$PATH中,则可以完全限定其路径

from subprocess import Popen
cmd=['cd',r'C:Program Files (x86)Notepad++','&&','notepad','LICENSE','&&',r'D:ProgramToolsPutty.exe','-v']
d=Popen(cmd, shell=True)

相关内容

  • 没有找到相关文章

最新更新