gpt4 book ai didi

python - 将 nano 作为 python 的子进程启动,捕获输入

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:41 24 4
gpt4 key购买 nike

我正在尝试从 Python 内部启动一个文本编辑器 (nano),让用户输入文本,然后在他们写出 (Control-O) 时捕获文本。我之前没有使用过 subprocess 模块,也没有使用过管道,所以我不知道接下来要尝试什么。

到目前为止我有这段代码:

a = subprocess.Popen('nano', stdout=subprocess.PIPE, shell=True)

a 应捕获输出的位置。然而,这段代码并没有启动 nano,而是让 python 终端表现得很奇怪。向上和向下键(历史记录)停止工作,退格键功能失调。

有人能指出我解决这个问题的正确方向吗?我意识到我可能需要阅读 Python 中的管道,但我能找到的唯一信息是 pipes 模块,它没有太大帮助。

最佳答案

Nano 中的 Control-O 写入正在编辑的文件,即,写入标准输出——因此,放弃捕获标准输出的尝试,只读取文件一旦用户将其写出并退出 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 Return control-X ,并且:

0
>>> with open(n) as f: print f.read()
...
Hello world!


>>>

关于python - 将 nano 作为 python 的子进程启动,捕获输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com