Python:如何修改/编辑打印到屏幕的字符串并将其读回?

TMS*_*TMS 8 python

我想在Windows中将字符串打印到命令行/终端,然后编辑/更改字符串并将其读回.谁知道怎么做?谢谢

print "Hell"
Hello!  <---Edit it on the screen
s = raw_input()
print s
Hello!
Run Code Online (Sandbox Code Playgroud)

Din*_*gar 0

我对命令行应用程序有同样的用例。

终于找到了一个 hack 来做到这一点。

# pip install pyautogui gnureadline

import pyautogui
import readline
from threading import Thread


def editable_input(text):
    Thread(target=pyautogui.write, args=(text,)).start()
    modified_input = input()
    return modified_input


a = editable_input("This is a random text")
print("Received input : ", a)
Run Code Online (Sandbox Code Playgroud)

这里的技巧是使用 pyautogui 从键盘发送文本。但我们想在 input() 之后立即执行此操作。由于 input() 是阻塞调用,因此我们可以在不同的线程中运行 pyautogui 命令。并在主线程中紧接着有一个输入函数。

gnureadline 是为了确保我们可以按左右箭头键在终端中移动光标而不打印转义字符。

在 Ubuntu 20、python 3.7 上测试过