python - python中有没有办法启动Powershell“会话”/在不同时间将多个命令传递给单个powershell会话?
问题描述
例如,假设我想在 powershell(或命令行)中设置一个变量,然后稍后使用 subprocess.check_output("echo $var", shell=True) 之类的东西获取该变量(这不是我需要的东西做,只是一个例子)。或者,假设我想让用户“cd”到一个目录,并能够从该目录运行命令。我将能够拥有一些保存当前目录的 python 变量,并始终运行“cd {dir};{command}”,但这将是低效的,并且仍然不适用于每种情况,我需要添加对于用户可能想要运行命令然后运行取决于第一个命令的另一个命令的每种可能情况的一些特殊代码。
抱歉,如果我把这个问题表述得很糟糕,请告诉我是否应该澄清一下。蒂亚!
解决方案
好的,经过一番搜索,我找到了一种方法。使用名为 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 中。
推荐阅读
- kframework - 打印配置的值
- rust - 为什么将连字符的 crate 名称更改为带下划线的名称是可能的,在这种模棱两可的情况下命名规则是什么?
- .net - 定义要出现的主窗体
- mongodb - 实现搜索潜文本mongodb
- windows - 7-Zip 对匹配 *.* 的文件夹关闭递归
- python - 如何将字符串列表拆分为每个字符的子列表
- javascript - 在特定范围值内创建动态数组
- javascript - 我可以配置 Brain.js 让它输出 0 到 1 之间的数字数组吗?
- java - 正则表达式替换除星号和转义星号以外的所有特殊字符
- spring-cloud-config-server - 将自定义 AmazonS3 客户端对象注入 Spring Cloud Config 服务器,而不是使用 S3 后端提供的对象