【问题标题】:How to read a line in the terminal with python [duplicate]如何使用python在终端中读取一行[重复]
【发布时间】:2019-07-22 11:56:30
【问题描述】:

我正在尝试在 python 3 中获取已写入的行,但我还没有找到任何可以从终端读取行的函数。它应该像 sys.stdout.read() 或 sys.stdout.readline() 一样工作,但这个函数只会抛出一个错误。

【问题讨论】:

  • 从终端读取一行是什么意思?使用 sys 参数运行程序?在程序中输入一些东西?从终端的历史中读取?请参阅help center 并继续阅读how to ask。在这个问题中,不清楚您在问什么,而且听起来太宽泛,如果您不edit it,可能会被关闭
  • 我不明白这个问题有什么不清楚的地方。
  • 我的意思是从 print() 写入的同一个地方读取。 sys.stdout 没有读取功能。
  • 你的意思是input()?抱歉,也许只有我一个人,但这个问题非常不清楚......可以用多种方式解释
  • 你有它。谷歌快速搜索

标签: python python-3.x unix terminal


【解决方案1】:

如果你的意思是从用户/管道读取,那么只需使用input

但是,从您的 cmets 看来,您似乎希望能够读取 已打印的内容

为此,您有几个选择。如果您实际上并不希望它显示在终端上,并且您只关心输出的某些部分,那么您可以使用contextlib.redirect_stdoutcontextlib.redirect_stderr。您可以将其与io.StringIO 结合使用,以将应用程序的输出捕获到字符串中。这已在问题Capture stdout from a script in Python

中讨论过

但是,如果您想要同时提供打印到终端给您行的方法,那么您需要实现自己的继承自io.TextIOBase 或使用io.TextIOWrapper 的类型。

【讨论】:

  • 谢谢,这正是我所要求的。
【解决方案2】:

你的意思是这样的吗?

name = input("Enter a name: ")
print(name)

【讨论】:

  • 不,这将读取用户输入,而不是终端输出。
猜你喜欢
  • 2020-02-01
  • 1970-01-01
  • 2021-12-26
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多