使用 subprocess.Popen Python 执行两个命令 [重复]

Posted

技术标签:

【中文标题】使用 subprocess.Popen Python 执行两个命令 [重复]【英文标题】:Execute two commands with subprocess.Popen Python [duplicate] 【发布时间】:2021-12-31 23:25:08 【问题描述】:

我想通过从 python 脚本调用批处理文件来执行它。问题是这批需要设置JAVA_HOME。我不想在系统环境变量中设置这个变量,我想从 python 来做。有没有办法通过 Like this 执行两个批处理命令

p = Popen("""set JAVA_HOME=D:\GIT\G_ATC_FCT_SW_HSM_Daimler\Tools\jdk-8.0.242.08-hotspot;D:\\GIT\\G_ATC_FCT_SW_HSM_Daimler\\Tools\\plugins\\com.nxp.id.jcop.eclipse_6.0.0.8\\cmds\\converter.bat Java_Card_Converter-3.0.5""")
    stdout, stderr = p.communicate()

但我收到此错误FileNotFoundError: [WinError 2] The specified file could not be found。 是否可以从 popen 做到这一点?

【问题讨论】:

你的反斜杠没有被转义(这可能是FileNotFoundError的来源) 另外,如果一切都失败了,您可以使用这两个命令创建一个批处理文件并通过 Popen 运行那个 @GPhilo 感谢您的反馈,我用双反斜杠进行了测试,但这并不能解决问题,我认为 Popen 只能用于执行批处理或 shell 脚本。另外我不想创建一个批处理脚本来执行这两个命令,因为我可以从 python 执行它。 那么由于您实际上不需要运行两个命令,而只需要在修改后的环境下运行脚本,因此请使用此处的解决方案:***.com/a/4453495/3214872 谢谢@GPhilo,你给我的链接帮了我很大的忙,将验证解决方案 【参考方案1】:

@GPhilo 提供的回复帮助了我。这是我的问题的解决方案:

那么由于您实际上不需要运行两个命令,而只需要在修改后的环境下运行脚本,因此请使用此处的解决方案:Python subprocess/Popen with a modified environment – GPhilo

【讨论】:

以上是关于使用 subprocess.Popen Python 执行两个命令 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 subprocess.Popen 启动 pyuic5

python subprocess.Popen

python中的subprocess.Popen()使用

如何从 subprocess.Popen 使用 STDIN [重复]

使用 subprocess.Popen 隐藏控制台

杀死使用 Python 的 subprocess.Popen() 创建的进程 [重复]