В этом руководстве по Python я объясню, что означают stdin, stdout и stderr, а также рассмотрю несколько связанных с этим примеров.
Python предлагает потоки, которые служат представлением stdin, stdout и stderr. Давайте рассмотрим, как мы можем использовать эти объекты для управления вводом, выводом и ошибками нашей программы.
- Что такое?
- Стандартный ввод
- Класс sys.stdin
- Стандартный вывод
- Класс sys.stdout
- Класс Stderr
- Класс sys.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.
Стандартный вывод
Стандартный вывод 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 можно увидеть на снимке экрана ниже.
Класс 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.
Класс 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 обратитесь к снимку экрана ниже.
stdin stdout и stderr являются важными компонентами стандартной системы ввода-вывода для ввода, вывода и обработки ошибок в программировании на Python.