如何在 Python 中从 stdin 读取数据

有三种方法可以读取 Python 中的 stdin 数据。

  1. sys.stdin
  2. input() 内置函数
  3. fileinput.input() 函数

1. 使用 sys.stdin 从标准输入读取

Python sys 模块 stdin 由解释器用于标准输入。内部,它呼叫 input() 函数。输入字符串附有新线字符(\n)在末尾。因此,您可以使用 rstrip() 函数来删除它。

1import sys
2
3for line in sys.stdin:
4    if 'Exit' == line.rstrip():
5        break
6    print(f'Processing Message from sys.stdin *****{line}*****')
7print("Done")

输出:

1Hi
2Processing Message from sys.stdin *****Hi
3*****
4Hello
5Processing Message from sys.stdin *****Hello
6*****
7Exit
8Done

Python Stdin Example

注意使用 rstrip() 删除后续新线字符,以便我们可以检查用户是否输入了退出消息。

使用 input() 函数读取 stdin 数据

我们还可以使用 Python input() 函数来读取标准输入数据. 我们也可以向用户发送消息。

1while True:
2    data = input("Please enter the message:\n")
3    if 'Exit' == data:
4        break
5    print(f'Processing Message from input() *****{data}*****')
6
7print("Done")

输出:

Python Input Read From Stdin

input() 函数不会将 newline 字符附加到用户消息中。

使用fileinput模块阅读标准输入

我们还可以使用 fileinput.input() 函数从标准输入中读取。 文件输入模块提供了工具函数,可在标准输入或文件列表上循环。 当我们不向 input() 函数提供任何参数时,它会从标准输入中读取参数。

1import fileinput
2
3for fileinput_line in fileinput.input():
4    if 'Exit' == fileinput_line.rstrip():
5        break
6    print(f'Processing Message from fileinput.input() *****{fileinput_line}*****')
7
8print("Done")

输出:

Python Fileinput Read Standard Input

Published At
Categories with 技术
Tagged with
comments powered by Disqus