python的另一个winpty绑定(额外包)
yawinpty-extra的Python项目详细描述
又一个针对python的winpty绑定
安装
pip install yawinpty
预构建控制盘的运行库依赖性
从源构建
- Python3.5+
- 安装Visual C++ 2015 Build Tools,然后使用python setup.py build生成
- 较旧的python
<安装> ^ {EM1} $Visual C++ CPython version 10.0 3.3, 3.4 9.0 2.6, 2.7, 3.0, 3.1, 3.2 Visual C++ 2015 Build Tools和VisualC++生成工具的匹配版本。打开“VisualC++^ {EM1} $ 2015 EEM>构建工具命令提示符”,与Python相同的拱,然后使用^ {TT1}$构建
基本示例
fromyawinptyimport*withPty()aspty:pty.spawn(SpawnConfig(SpawnConfig.flag.auto_shutdown,cmdline='python -c "print(\'HelloWorld!\')"'))withopen(pty.conout_name(),'r')asf:print(f.read())
使用yawinpty
使用yawinpty的共同目标是打开一个伪终端,然后在其中生成一个进程,并将输入发送到它的stdin,然后从它的stdout获取输出。pty包装一个伪终端并执行这些操作
classyawinpty.pty(config=yawinpty.config())
yawinpty.pty接受yawinpty.config的实例作为其配置
classyawinpty.config(*标志)
对于要初始化的标志,“配置类”通常是一组class.flag.*。示例:
cfg=yawinpty.Config(yawinpty.Config.flag.plain_output)
help(yawinpty.Config.flag)获取更多支持的标志
对于yawinpty.SpawnConfig,它是类似的
help(yawinpty.Config)获取更多方法
Pty类的实例具有以下方法:
pty.conin_name(
私人conout_name(
私人conerr_name(
获取控制台输入/输出/错误管道的名称。可以将名称传递给内置的open以打开管道
pty.代理进程id(
获取代理进程的进程ID
pty.设置大小(
设置终端的窗口大小
pty.spawn(spawn配置)
在pty中生成一个进程。spawn_config是yawinpty.SpawnConfig的实例。注意,一个pty实例只能产生一次,否则将引发yawinpty.RespawnError。
返回派生进程的process id,thread id元组
classyawinpty.sprownconfig(*sprownflags,appname=none,cmdline=none,cwd=none,env=none)
- spawnFlags
- 来自yawinpty.SpawnConfig.flag 的标志
- appname
- 可执行文件的完整路径。如果指定了cmdline,则可以是None。
- cmdline
- 传递给派生进程的命令行
- cwd
- 生成进程的工作目录
- env
- 生成进程的环境,类似于{'VAR1': 'VAL1', 'VAR2': 'VAL2'} 的dict
请注意,init aSpawnConfig不会生成进程。只有在调用Pty.spawn()时才会生成进程。一个spawnconfig实例可以多次使用
pty.等待代理(timeout=yawinpty.infinite)
pty.wait\u子进程(timeout=yawinpty.infinite)
<>等待代理/生成进程退出。超时时引发yawinpty.timeoutexpiredpty.关闭(
杀死进程不退出,关闭pTy并释放Windows资源
异常
所有与winpty相关的异常都是yawinpty.WinptyError的子类。help(yawinpty)了解更多信息