You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python脚本启动PowerShell并在其中运行另一个Python脚本?

解决方案

要实现通过Python打开新PowerShell窗口并运行指定Python脚本,无需事后向窗口输入命令,直接在启动PowerShell时指定要执行的命令即可,具体方法如下:

核心思路

start命令支持将参数传递给启动的程序,因此可以直接让PowerShell在启动时执行目标命令,无需后续交互。

代码示例

import subprocess

# 构造启动命令:打开PowerShell,执行hello_world.py,执行完后暂停窗口避免直接关闭
command = 'start powershell -Command "python ./hello_world.py; pause"'
subprocess.call(command, shell=True)

关键细节说明

  • -Command是PowerShell的内置参数,用于指定启动后立即执行的命令字符串。
  • 末尾添加; pause是为了让PowerShell窗口在脚本执行完成后保持打开状态,方便查看输出;如果不需要停留,可去掉该部分。
  • 如果hello_world.py不在当前工作目录,需替换为绝对路径,例如:python "C:/projects/hello_world.py"
  • 也可以指定PowerShell的完整路径确保兼容性,比如:
    command = 'start "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -Command "python ./hello_world.py; pause"'
    

原方法无效的原因

  • 你之前的代码只是启动了一个空的PowerShell窗口,没有传递任何要执行的命令。
  • subprocess.Popen的communicate()方法仅能与当前子进程的标准输入输出交互,但start命令启动的是独立的新窗口进程,其输入输出与父Python进程不共享,因此无法通过该方式向新窗口输入命令。

内容的提问来源于stack exchange,提问作者cecile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:06:01