Python:打印行而不中断输入

Python:打印行而不中断输入,python,python-3.x,command-line-interface,Python,Python 3.x,Command Line Interface,我正在尝试为我正在运行的一个小AngularJS应用程序创建一个简单的多线程命令提示符 在这个提示符中,我想输入一个命令,而不被输出打断,如下所示: Output More output HTTP 1.0 HTTP Request from 127.0.0.1 for /img/foo.png - 200 > Humble command I'm ty-OH NO BUT MORE OUTPUT SUCH ANNOYING OUTPUT FOR FAVICON.ICO - 404 -pin

我正在尝试为我正在运行的一个小AngularJS应用程序创建一个简单的多线程命令提示符

在这个提示符中,我想输入一个命令,而不被输出打断,如下所示:

Output
More output HTTP 1.0
HTTP Request from 127.0.0.1 for /img/foo.png - 200
> Humble command I'm ty-OH NO BUT MORE OUTPUT
SUCH ANNOYING OUTPUT FOR FAVICON.ICO - 404
-ping.. Dang it.
相反,我希望它是这样的:

Output
More output HTTP 1.0
HTTP Request from 127.0.0.1 for /img/foo.png - 200
OH NO BUT MORE OUTput and it's not breaking up what
you're typing... :/ - favicon.ico 404 btw...
> Humble command I'm typing that's not broken up
我不确定是否可以在命令提示符下使用,如果需要,我可能只导入pygame或查看pyglet(如果需要),但我相信命令提示符会更好

我希望我能给你解释一下,但是如果你需要更多的信息,请在下面询问

使用Python3.x

这就是它看起来的样子


Edit:我添加了cmd.cmd作为我的命令提示符,并按照J.F.塞巴斯蒂安的命令做了,但它起了作用。。奇怪..

听起来您想将python脚本作为后台进程运行:

>python yourScript.py &
>now it won't interrupt you but you'll have to pipe output to a file if you want to read it
&
就是这样做的


如果您想在后台从Python中运行没有输出的脚本,我会考虑使用.< /p>

以避免其他线程中断您的输入的输出,组织您的脚本只在主线程中执行标准I/O,例如,替换<代码> sys .STDUT/<代码>,

sys.stderr
具有类似文件的对象,当您完成输入时,队列写入并使用队列:

import sys
from queue import Queue, Empty

class QueuedFile:
   def __init__(self, queue):
       self.queue = queue
   def write(self, text):
       self.queue.put(text)
   def flush(self):
       pass # noop

q = Queue()
sys.stdout = sys.stderr = QueuedFile(q)

# print from multiple threads while accepting input...

# print queued output
while True:
    try:
        sys.__stdout__.write(q.get(block=False))
    except Empty:
        break # no more output

有趣的。。。有没有这样的模块,或者我需要完成吗?我的头现在很痛,但是你帮了我很大的忙!我将去研究队列模块……我一直在查找它,为什么您可以将
arg设为True,却有一个try/except块?@MathManiac:在可用排队输出耗尽时中断循环。我假设还有一个外循环,即,您无中断地读取输入,然后打印输出,然后再次读取输入,等等。我遇到了一个问题:sys.\uu stdout\uuuuuu和sys.\uu stderr\uuuu返回无,但我只是通过查看sys文档并将sys.stderr返回到正常状态来解决。编辑:我不知道为什么它不正常,但我会在我的程序开始时将它设置回正常,看看它是否有效。虽然这不能解决我想解决的问题,但信息+1!我以后可能会用它!