首页 > 解决方案 > python中有没有办法启动Powershell“会话”/在不同时间将多个命令传递给单个powershell会话?

问题描述

例如,假设我想在 powershell(或命令行)中设置一个变量,然后稍后使用 subprocess.check_output("echo $var", shell=True) 之类的东西获取该变量(这不是我需要的东西做,只是一个例子)。或者,假设我想让用户“cd”到一个目录,并能够从该目录运行命令。我将能够拥有一些保存当前目录的 python 变量,并始终运行“cd {dir};{command}”,但这将是低效的,并且仍然不适用于每种情况,我需要添加对于用户可能想要运行命令然后运行取决于第一个命令的另一个命令的每种可能情况的一些特殊代码。

抱歉,如果我把这个问题表述得很糟糕,请告诉我是否应该澄清一下。蒂亚!

标签: pythonsubprocess

解决方案


好的,经过一番搜索,我找到了一种方法。使用名为 pexpect 的模块,GitHub 上的 MarkBaggett 提供了一种简单的方法来做到这一点:pxpowershell。这是一个例子:

ps = pxpowershell()
ps.start_process()
ps.run("$x = 10")
print(ps.run("echo $x"))
ps.stop_process()

唯一的小问题是 1. 颜色不起作用,以及 2. 您需要 decode() 和 strip() 输出,尽管您可以将其添加到 pxpowershell.py 中。


推荐阅读