当前位置: 首页 > 面试题库 >

进程中的Python命令行输入

尉迟宇定
2023-03-14
问题内容

我有一个系统,需要从几个不同的进程接收输入。最简单的只是命令行,用户可以在其中手动输入数据。这些数据将添加到multiprocessing.Queue并由主流程稍后处理,但我还没有走那么远;raw_input在进程内部调用似乎不起作用。我抽出了代码的精髓,下面是一个示例:

import multiprocessing

def f():
    while True:
        raw_input('>>>')

p = multiprocessing.Process(target = f)
p.start()

这个简单的代码抛出了这一点:

~$ python test.py
Process Process-1:
Traceback (most recent call last):
  File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
    self.run()
  File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "test.py", line 5, in f
    raw_input('>>>')
EOFError: EOF when reading a line
>>>~$

如何在Python的进程中获取命令行输入?


问题答案:

当您在Python中生成线程时,它将关闭stdin。您不能使用子流程来收集标准输入。使用主线程来收集输入,然后将其从主线程发布到队列中。可以将stdin传递到另一个线程,但是您可能需要在主线程中将其关闭。



 类似资料:
  • 问题内容: 我从Linux 64位汇编程序访问进程命令行时遇到问题。为了用最少的代码重现该代码,我制作了一个32位程序,该程序打印程序名的前5个字符: 该程序正在运行。当我将其转换为64位并在Linux 64上运行时,它不会显示任何内容: 我的错误在哪里? 问题答案: 您正在将正确的地址加载到中。 然后调用32位syscall接口。这会将地址截断为32位,这使它不正确。(如果您使用调试器并在第一个

  • 问题内容: 我知道命令行界面(例如Git等)能够隐藏用户的输入(对于密码有用)。有没有办法用Java编程地做到这一点?我正在从用户那里输入密码,我希望他们的输入在该特定行(而不是所有用户)上被“隐藏”。这是我的代码(尽管我怀疑这会有所帮助…) 问题答案: 尝试。不过,您至少必须运行Java 6。 请注意,这不适用于Eclipse控制台。您必须从 真实的 console / shell / term

  • 问题内容: 你知道在Linux中尝试使用Sudo时会如何提示你输入密码,并且在键入时在终端窗口中什么也不显示(未显示密码)吗? 有没有办法在Python中做到这一点?我正在编写一个脚本,该脚本需要非常敏感的信息,并希望在键入时将其隐藏。 换句话说,我想从用户那里获取密码而不显示密码。 问题答案: 用途: 可以将可选提示作为参数传递;默认值为” “。 请注意,此功能需要正确的终端,因此它可以关闭键入

  • 如果表达式无法在一行输入完,用三点"…"加回车键表示下一行继续该语句的输入.例如: s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; "=","+"和"-"符号前后的空格可以省略,但使用可以增加易读性.

  • 问题内容: 这是一段简单的代码: 我将其执行为:java Read <input.txt 一旦将input.txt完全传递到程序中,x就会保持无限的null。为什么呢?有没有办法在将文件输入代码后使标准输入(命令行)活动?我尝试关闭流并重新打开,但它不起作用。重置等。 问题答案: 通过执行操作,您已经告诉操作系统,对于此过程,管道文件 是 标准文件。您不能再从应用程序内部切换回命令行。 如果要这样

  • 问题内容: 我希望能够在命令行上的简单PHP脚本中显示进度表。而不是看到 我只想更改数字,并替换以前的数字,就像git clone一样。 在搜索时,我在Perl中发现了相同的问题,这很完美,但是在PHP中找不到。可能吗?如果没有,我将求助于C。 谢谢 问题答案: 这可以使用 ANSI转义序列 来完成- 列表请参见此处。 在PHP中,将在该页面上指示时使用。 在您的情况下,您可以使用以下方法: 我简