В этом руководстве по Python я объясню, что означают stdin, stdout и stderr, а также рассмотрю несколько связанных с этим примеров.

Python предлагает потоки, которые служат представлением stdin, stdout и stderr. Давайте рассмотрим, как мы можем использовать эти объекты для управления вводом, выводом и ошибками нашей программы.

Содержание

Что такое?

Стандартный ввод: в Python он обычно называется stdin и служит дескриптором файла, с помощью которого пользовательская программа получает информацию от пользователя. Ввод осуществляется в программу через стандартный ввод.

Стандартный вывод: в Python он также известен как stdout, где пользовательская программа записывает регулярную информацию. Вывод передается через стандартный вывод, что позволяет программе отображать информацию пользователю.

Стандартная ошибка: в Python она обозначается как stderr и используется пользовательской программой для записи информации об ошибке. Об ошибках сообщается через стандартный код ошибок, что облегчает идентификацию и обработку ошибок отдельно от обычного вывода программы.

Стандартный ввод

Стандартный ввод Python представляет собой стандартный поток ввода, обычно связанный с данными, поступающими в программу. В этом потоке программа получает входные данные из различных источников, таких как клавиатура или выходные данные другой программы.

В Python мы можем читать входные данные со стандартного ввода с помощью функции input() или путем чтения из объекта sys.stdin.

Вот простой пример:

name = input("Enter your name: ")
print("Hello, " + name + "!")
print("Welcome to PythonGuides!")

Выход:

Enter your name: Chandler M Bing
Hello, Chandler M Bing!
Welcome to PythonGuides!

Результат можно увидеть на скриншоте ниже после выполнения кода в PyCharm.

Стандартный ввод

Класс sys.stdin

Давайте посмотрим пример, в котором мы будем использовать класс sys.stdin в Python.

import sys

print("Enter your favorite city in the United States(type 'exit' to quit):")

for line in sys.stdin:
    city = line.strip()
    if city.lower() == 'exit':
        print('Exiting the program...')
        exit(0)
    else:
        print('Your favorite city in the United States is:', city)

Вывод: в цикле for мы перебираем входные данные со стандартного ввода Python до тех пор, пока они не будут открыты.

Если строка после удаления символов новой строки с помощью функции Strip() сзади равна строке «exit», то программа выйдет с использованием выхода(0). В противном случае программа распечатает входные данные.

Enter your favorite city in the United States(type 'exit' to quit):
new york
Your favorite city in the United States is: new york
texas
Your favorite city in the United States is: texas
exit
Exiting the program...

На снимке экрана ниже показан код, реализованный в редакторе PyCharm.

Класс sys.stdin

Стандартный вывод

Стандартный вывод Python представляет собой стандартный поток вывода, куда программа записывает свой обычный вывод. Этот поток используется для отображения информации, результатов или любого другого вывода, генерируемого программой.

По умолчанию функция print() в Python записывает данные в стандартный вывод, что делает его основным методом вывода данных в программах.

Рассмотрим следующий пример:

print("Hello and Welcome to PythonGuides")

Вывод: строка выводится на стандартный вывод Python, обычно на консоль или терминал, где выполняется программа.

Hello and Welcome to PythonGuides

Ниже приведен снимок экрана, упомянутый после реализации кода в редакторе Pycharm.

Стандартный вывод 

Класс sys.stdout

Вот пример использования класса sys.stdout в Python:

import sys

stdout_fileno = sys.stdout
sample_input = [
    "Welcome to the United States!",
    "Explore the Statue of Liberty in New York City",
    "Visit the Grand Canyon in Arizona",
    "Experience the magic of Disneyland in California"
]
for message in sample_input:
    stdout_fileno.write(message + '\n')

Вывод: здесь мы просто перебираем входные данные и записываем данные в качестве выходных, используя sys.stdout в Python.

Welcome to the United States!
Explore the Statue of Liberty in New York City
Visit the Grand Canyon in Arizona
Experience the magic of Disneyland in California

Результат выполнения кода в PyCharm можно увидеть на снимке экрана ниже.

Класс sys.stdout

Класс Stderr

Stderr Python представляет собой стандартный поток ошибок, который используется для отображения сообщений об ошибках и диагностической информации.

В отличие от стандартного вывода в Python, стандартный вывод обычно не буферизуется, а это означает, что сообщения об ошибках появляются немедленно на экране, даже если стандартный вывод перенаправляется или передается по конвейеру. В Python сообщения об ошибках и исключениях автоматически направляются в stderr.

Например:

import sys

try:
    result = 10 / 0
except Exception as e:
    print("An error occurred:", str(e), file=sys.stderr)

Выход:

An error occurred: division by zero

На снимке экрана ниже показана реализация кода в редакторе PyCharm.

Класс Stderr

Класс sys.stderr

Вот пример, позволяющий проверить, как использовать класс sys.stderr в Python:

import sys

stdout_fileno = sys.stdout
stderr_fileno = sys.stderr
sample_input = ['New York', 'Los Angeles', 'Chicago', 'exit']
for input_data in sample_input:
    stdout_fileno.write(f"Processing: {input_data}\n")
    try:
        result = input_data + 100
    except Exception as e:
        stderr_fileno.write(f"Error processing '{input_data}': {str(e)}\n")

Вывод: мы перебираем наши входные данные, используя цикл for в Python. и мы используем блоки try и кроме.

В блоке try мы пытаемся выполнить операцию, которая может вызвать исключение, а в блоке исключений мы перехватываем ошибку и печатаем сообщение об ошибке через stderr в Python.

Processing: New York
Processing: Los Angeles
Processing: Chicago
Processing: exit
Error processing 'New York': can only concatenate str(not "int") to str
Error processing 'Los Angeles': can only concatenate str(not "int") to str
Error processing 'Chicago': can only concatenate str(not "int") to str
Error processing 'exit': can only concatenate str(not "int") to str

После реализации кода в редакторе PyCharm обратитесь к снимку экрана ниже.

Класс sys.stderr

stdin stdout и stderr являются важными компонентами стандартной системы ввода-вывода для ввода, вывода и обработки ошибок в программировании на Python.

Добавить комментарий