用于在CLI中编辑文本的Python模块

时间:2009-06-01 08:10:22

标签: python text-editor command-line-interface

是否有一些python模块或命令允许我让我的python程序进入CLI文本编辑器,用一些文本填充编辑器,当它退出时,将文本输出到某个变量中?

目前我让用户使用raw_input()输入内容,但我想要比这更强大的东西,并将它显示在CLI上。

4 个答案:

答案 0 :(得分:8)

好吧,你可以用子进程启动用户的$ EDITOR,编辑一个临时文件:

import tempfile
import subprocess
import os

t = tempfile.NamedTemporaryFile(delete=False)
try:
    editor = os.environ['EDITOR']
except KeyError:
    editor = 'nano'
subprocess.call([editor, t.name])

答案 1 :(得分:2)

你可以看一下urwid,这是一个基于curses的,完整的用于python的UI工具包。它允许您定义非常复杂的界面,它包括不同类型文本的不同编辑框类型。

答案 2 :(得分:0)

如果您不需要Windows支持,可以使用readline module来获取基本命令行编辑,就像在shell提示符下一样。

答案 3 :(得分:0)

这是我为另一个项目编写的功能。它允许用户编辑文本行,并支持换行和光标|您可以使用箭头键来回移动。它依靠readchar模块读取密钥代码,因此它应该可以在Windows中运行,但是我只在linux终端上以及作为initramfs的一部分对其进行了测试。

l = ['a', 'l', 'e']
word = "apple"
def combo(d, r, c):
  for i in l:
    if any(j[0] == i and len(j) < r for j in c):
      w = [j if j[0] != i or len(j) == r else j+([i]*(r-1)) for j in c]
      yield ''.join(map(''.join, w))
      if any(j[0] in l and len(j) < r for j in w):
        yield from combo(d, r, w)


print(list(combo(l, 3, [[i] for i in word])))