小编luc*_*aba的帖子

python中的基本终端仿真

我一直在尝试编写一个基本的终端仿真脚本,因为出于某种原因我的mac上没有终端访问权限.但是要在搅拌机中编写游戏引擎脚本,控制台通常在你开始使用的终端中打开,这是至关重要的.
只是做一些简单的事情,比如删除,重命名等等.我曾经使用stream = os.popen(command)然后执行命令print (stream.read()).这适用于大多数事情,但不适用于任何互动.
不久我发现了一种新的方式:
sp = subprocess.Popen(["/bin/bash", "-i"], stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.PIPE)然后print(sp.communicate(command.encode())).这应该会产生一个我可以像终端一样使用的交互式shell,不管它吗?

但无论哪种方式,我都无法保持连接打开,并使用最后一个例子,我可以调用sp.communicate一次,给我以下输出(在这种情况下为'ls /')和一些错误:
(b'Applications\n[...]usr\nvar\n', b'bash: no job control in this shell\nbash-3.2$ ls /\nbash-3.2$ exit\n').第二次它给了我一个ValueError: I/O operation on closed file. 有时(比如'ls')我只得到这个错误:b'ls\nbash-3.2$ exit\n'.

那是什么意思?如何使用python模拟终端,允许我控制交互式shell或运行blender并与控制台通信?

python shell terminal blender

4
推荐指数
2
解决办法
5716
查看次数

标签 统计

blender ×1

python ×1

shell ×1

terminal ×1