谢谢大家。我正在编写脚本以在命令行中执行多个命令。这是我整个脚本的一部分。
我已经检查了很多答案,但是都没有解决我的问题。其中有些太旧而无法使用。
我的命令是这样的
cd C:/Users/Bruce/Desktop/test
set I_MPI_ROOT=C:\Program Files\firemodels\FDS6\bin\mpi
set PATH=%I_MPI_ROOT%;%PATH%
fds_local -o 1 -p 1 test.fds
python test.py
我试图用subprocess.run或使用os.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']
也就是说,最好用os.chdir完成cd。通过将环境字典提供给子流程调用,可以更好地完成设置。多行代码最好通过将几行代码放入shell脚本(可以接受参数)来完成,这样就不必弄乱python。
这是一个例子。如果命令不在操作系统的$ PATH中,则可以完全限定其路径
from subprocess import Popen
cmd=['cd',r'C:\Program Files (x86)\Notepad++','&&','notepad','LICENSE','&&',r'D:\Program\Tools\Putty.exe','-v']
d=Popen(cmd, shell=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句