Taking Input from stdin in Python

Introduction

In this article, we will explore how to take input from standard input (stdin) in Python. There are several ways to accomplish this:

  • Using sys.stdin
  • Using input()
  • Using fileinput.input()

Read Input from stdin in Python using sys.stdin

First, we need to import the sys module. sys.stdin can be used to get input directly from the command line. It is useful for reading standard input and automatically adds a newline after each line.

import sys

for line in sys.stdin:
    if 'exit' == line.rstrip():
        break
    print(f'You entered: {line.strip()}')

print("Exiting the program.")
        

Output:

Type your input here (type 'exit' to quit):
Hello
You entered: Hello
Goodbye
You entered: Goodbye
Exiting the program.

Read Input from stdin in Python using input()

The input() function can be used to take input from the user during program execution.

# Prompt user for input
user_input = input("What is your favorite book? ")

# Display the user's input
print("You said:", user_input)
        

Output:

What is your favorite book? The Great Gatsby
You said: The Great Gatsby

Read Input from stdin in Python using fileinput.input()

If we want to read multiple files at once, we can use fileinput.input(). First, we need to import the fileinput module.

Example 1: Reading Multiple Files by Providing File Names

In this example, we pass the names of the files as a tuple to the fileinput.input() function:

import fileinput

with fileinput.input(files=('file1.txt', 'file2.txt')) as f:
    for line in f:
        print(line.strip())
        

Output:

(Contents of file1.txt and file2.txt will be printed line by line)

Example 2: Reading Multiple Files from Command Line

Here, we pass file names as positional arguments from the command line:

import fileinput

for line in fileinput.input():
    print(line.strip())
        

Output:

(Contents of specified files will be printed line by line)

Conclusion

Taking input from stdin in Python provides flexibility in handling user input and reading data from files. By utilizing modules like sys and fileinput, you can enhance the interactivity of your applications, making it easier to gather data from various sources.