如何从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
相关产品推荐
相关产品推荐

