【问题标题】:How do I get a python script to run a command shell in Windows (10) where it opens in a program specific location?如何让 python 脚本在 Windows (10) 中运行命令 shell,它在程序特定位置打开?
【发布时间】:2020-07-23 02:55:46
【问题描述】:

我需要在命令提示符中运行命令,但它们仅在命令提示符设置在系统中的特定位置时才起作用。我需要以下命令才能在 python 脚本中运行:

import os
os.system("set OMP_NUM_THREADS=2")
os.system("explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"@
os.system("cd C:\CFD\crit_vel_01_02")
os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")
os.system("PAUSE") 

系统无法识别该命令

os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")

除非这是在安装程序“fds”时安装的命令外壳中运行,该程序是一个火灾动力学模拟器。我很欣赏这似乎对程序非常具体,但我假设 python 可以通过某种通用方式从不同的位置/使用不同的设置运行命令 shell。

命令提示符的快捷方式称为 CMDfds,安装在:

“C:\ProgramData\Microsoft\Windows\开始菜单\Programs\FDS6”

在属性中,快捷方式选项卡中的目标是:

“C:\Windows\System32\cmd.exe /k fdsinit”

【问题讨论】:

    标签: python windows shell cmd command-line


    【解决方案1】:

    使用系统命令运行程序的问题在于它们通常具有不同的 shell 环境。为了防止由此产生的问题,最好使用绝对路径。在你的情况下:

    os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")
    

    应该改为:

    os.system("/absolute/path/to/mpiexec  -n  9 FDS  crit_vel_01_02.fds")
    

    【讨论】:

    • 谢谢,我尝试运行 "C:\Program Files\firemodels\FDS6\bin\mpi\mpiexec.exe -n 9 FDS crit_vel_01_02.fds" 但是这似乎什么也没运行,只是卡住了在命令上,就好像它正在处理一样。我也尝试过运行 cd "C:\Program Files\firemodels\FDS6\bin\mpi\ mpiexec -n 9 "C:\Program Files\firemodels\FDS6\bin\fds.exe" ... "C:\CFD \crit_vel_01_02\crit_vel_01_02.fds" 但结果相同?
    • 当您在命令行中单独运行“C:\Program Files\firemodels\FDS6\bin\mpi\ mpiexec -n 9 9 FDS crit_vel_01_02.fds”时,是否出现错误?你为什么运行“cd”?
    • 如果它看起来卡住了,你怎么知道程序在它的独立形式下正常工作?您能否检查当时您的机器上正在运行哪些进程以排除它是否崩溃或挂起的一些问题?
    【解决方案2】:

    不确定它是否有效,但您可以在subprocess.runshell=True 尝试。

    如果 shell 为 True,指定的命令将通过 shell 执行。如果您将 Python 主要用于它在大多数系统 shell 上提供的增强控制流,并且仍然希望方便地访问其他 shell 功能,例如 shell 管道、文件名通配符、环境变量扩展和 ~ 到用户家的扩展,这将很有用目录。

    还可以尝试从 fds 命令 shell 运行 python 脚本。它似乎正在初始化 shell 中的东西。

    【讨论】:

    • 抱歉,我不太明白这个,我如何将这个 subprocess.run 合并到 python 脚本中?
    • @James ;代替os.system 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2010-12-19
    • 2019-04-08
    • 2015-11-02
    • 2014-05-01
    • 2012-04-26
    • 2020-06-13
    相关资源
    最近更新 更多