将stdout从交互式python应用程序传递给cd命令(subshel​​l?)

时间:2016-10-29 18:41:32

标签: python bash console-application python-curses urwid

如果我接管pixmap = QtGui.QPixmap() pixmap.loadFromData(blob) ,则使用交互式Python脚本启动控制台GUI,例如stdoutcurses;在完成一些操作并关闭循环后,我如何urwidcd中打印的路径?

例如,

stdout

运行时,按import sys import urwid def check_for_q(key): if key in ('q', 'Q'): raise urwid.ExitMainLoop() txt = urwid.Text(u"Thanks for helping") fill = urwid.Filler(txt, 'top') loop = urwid.MainLoop(fill, unhandled_input=check_for_q) loop.run() sys.stdout.write('/usr/bin') q退出Q循环:

urwid

如果这是一个只打印到(py27) $ python curses_script.py /usr/bin (py27) $ 的简单python脚本,我可以stdout。但是,如上所述,这将挂起,因为python子shell无法劫持cd $(python simple_script.py)并处理输入。

是否可以在不写入文件的情况下解决此问题?

1 个答案:

答案 0 :(得分:0)

而不是做一些重击黑魔法,这可以很容易地完成,这是一个有效的解决方案

temp_file=$(mktemp /tmp/curses_script.XXXXXX)
python curses_script.py temp_file
# write to temp file in script...
cd $(cat temp_file)
rm $temp_file