我试图从Python内部启动一个文本编辑器(nano),让用户输入文本,然后在写出后捕获文本(Control-O)。我没有与subprocess
之前没有模块,也没有管道,所以我不知道下一步要尝试什么。
到目前为止我有这个代码:
a = subprocess.Popen('nano', stdout=subprocess.PIPE, shell=True)
Where a
应该捕获输出。然而,这段代码并没有启动 nano,而是使 python 终端表现得很奇怪。向上和向下键(历史记录)停止工作,退格键无法正常工作。
有人可以指出我解决这个问题的正确方向吗?我意识到我可能需要阅读 Python 中的管道,但我能找到的唯一信息是pipes
模块,它没有多大帮助。
Nano 中的 Control-O 写入正在编辑的文件, i.e., not到标准输出——因此,放弃捕获标准输出的尝试,并在用户写出文件并退出 Nano 后读取文件。例如,在我的 Mac 上:
>>> import tempfile
>>> f = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
>>> n = f.name
>>> f.close()
>>> import subprocess
>>> subprocess.call(['nano', n])
在这里,我写下“Hello world!”然后点击 control-O 返回 control-X ,然后:
0
>>> with open(n) as f: print f.read()
...
Hello world!
>>>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)