我试图找到一种格式化输入的方法,在它之后保留一些空格,然后在同一行中打印一些字符。
这段代码显然不起作用,但可能对我的需求很明亮:
print('|') + var=input("What's your name: ")+(reserved 10 characters) +print('|')
或:
char + input command + Reserverd space + char
我需要这个结果:
'|What's your name?>>> |'
首先' |'没关系,但第二个?和空间?
非常感谢你!
答案 0 :(得分:0)
你不能直接做你想做的事。它有两种方法。
首先,您可以直接打印终端控制序列,打印出来:
| What's your name: |
...然后将光标移动到用户输入的冒号后面。幸运的是,你只是在这里处理一行,所以你需要的只是退格,几乎所有你将要遇到的终端都是'\x08'
,所以它只是:
var = input("| What's your name: |\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08")
但是,用户可以键入第二个|
,并且在某些终端上|
将在他进入后立即被删除,而在某些终端上甚至可能会被删除只需退一步就可以了。
使用termcap
库可能会变得更复杂,也许可以使用readline
,但这里总会有局限性;终端处于线路缓冲模式,因此您的代码无法控制在用户点击进入之前发生的事情。
或者,您可以手动接管终端并管理用户输入,以使用户保持在10个字符以内。在* nix平台上,这是来自tcsetattr
的{{1}}和select
以及read
的复杂混乱;在Windows上,它是一堆" conio" stdin
中的调用更简单,但文档记录较少。
但是,如果你真的想这样做,你可能应该使用更高级别的库,比如mscvrt
。