【发布时间】:2018-09-18 00:05:14
【问题描述】:
我有这个 python 脚本(带有ncurses):
#! /usr/bin/python3
import sys,os
import curses
def draw_menu(stdscr):
k = 0
while (k != ord('q')):
stdscr.clear()
height, width = stdscr.getmaxyx()
stdscr.addstr(0, 0, "Last key is {}".format(k))
stdscr.refresh()
k = stdscr.getch()
def main():
curses.wrapper(draw_menu)
if __name__ == "__main__":
main()
这是我最后一次尝试(结果很糟糕)来捕获标准输出并发送按键:
这是Popen。
from subprocess import Popen, PIPE
#p = Popen('./test5.py', stdin=PIPE, stdout=PIPE, shell=True)
#p = Popen('./test5.py', shell=True)
p = Popen('./test2.py')
print(p.pid)
sleep(100)
p.stdin.write('a')
# p.stdin.close()
# p.stdout.close()
# p.wait()
这与pexpect不同:
import sys
import pexpect
child = pexpect.spawn('./test5.py', logfile=open("/tmp/file", "wb"))
child.logfile = open("/tmp/file", "wb")
child.expect(pexpect.EOF)
child.send('a')
child.send('q')
child.interact()
我尝试使用xdotools,但无法捕捉到标准输出。
是否有任何形式可以欺骗/欺骗可执行文件,让其“相信”它正在正常运行?
【问题讨论】:
-
你在解决什么样的问题?
-
谢谢,这是个好问题。有一个很好的旧开源游戏(它是用 ncurses 制作的)。我想或至少尝试包装这个游戏,并用 Godot 为这个游戏做一个前端。我正在尝试制作一个脚本来解析标准输出并发送密钥。
标签: python popen pexpect xdotool