如何在Python中从stdin读取

时间:2020-02-23 14:43:44  来源:igfitidea点击:

在Python中,有三种方法可以从stdin读取数据。

  • sys.stdin
  • input()内置函数
  • fileinput.input()函数

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

解释器将Python sys模块stdin用于标准输入。
在内部,它调用input()函数。
输入字符串的末尾附加换行符(\ n)。
因此,您可以使用rstrip()函数将其删除。

这是一个简单的程序,可以从标准输入中读取用户消息并进行处理。
当用户输入"退出"消息时,程序将终止。

import sys

for line in sys.stdin:
  if 'Exit' == line.rstrip():
      break
  print(f'Processing Message from sys.stdin *{line}*')
print("Done")

输出:

Hi
Processing Message from sys.stdin *Hi
*
Hello
Processing Message from sys.stdin *Hello
*
Exit
Done

请注意,使用rstrip()删除尾随的换行符,以便我们可以检查用户是否输入了"退出"消息。

2.使用input()函数读取标准输入数据

我们还可以使用Python input()函数读取标准输入数据。
我们还可以向用户提示消息。

这是一个简单的示例,用于在无限循环中读取和处理标准输入消息,除非用户输入退出消息。

while True:
  data = input("Please enter the message:\n")
  if 'Exit' == data:
      break
  print(f'Processing Message from input() *{data}*')

print("Done")

input()函数不会在用户消息后附加换行符。

3.使用文件输入模块读取标准输入

我们也可以使用fileinput.input()函数来读取标准输入。
fileinput模块提供实用程序功能来循环标准输入或者文件列表。
当我们不向input()函数提供任何参数时,它将从标准输入中读取参数。

此函数的工作方式与sys.stdin相同,并在用户输入数据的末尾添加了换行符。

import fileinput

for fileinput_line in fileinput.input():
  if 'Exit' == fileinput_line.rstrip():
      break
  print(f'Processing Message from fileinput.input() *{fileinput_line}*')

print("Done")