是否有一些python模块或命令允许我让我的python程序进入CLI文本编辑器,用一些文本填充编辑器,当它退出时,将文本输出到某个变量中?
目前我让用户使用raw_input()输入内容,但我想要比这更强大的东西,并将它显示在CLI上。
答案 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])))