Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Запуск консольной команды и получение её ответа с помощью Python 3 [дубликат]

#python #linux #python_3x


        
             
                
                    
                        
                            На этот вопрос уже даны ответы здесь:
                            
                        
                    
                
                        
                            Python 3 и командная строка
                                
                                    (2 ответа)
                                
                        
                                Закрыт 3 года назад.
            
                    
Как можно написать программу на Python 3 для линукса, чтобы она вбивала в терминал
команду и считывала ответ?
    


Ответы

Ответ 1



Для этого можно использовать функцию check_output из модуля subprocess: subprocess.check_output('ls file; exit 0', shell=True) Здесь shell=True нужно использовать, если вся команда идёт в виде одной строки, а ; exit 0 добавлено для того, чтобы не бросалось исключение в случае, если команда вернёт не нулевой код. Можно контролировать код возврата, используя блок try-except, отлавливая ошибки запущенных команд: try: subprocess.check_output('ls file', shell=True) except subprocess.CalledProcessError as e: print('Команда \n> {}\nзавершилась с кодом {}'.format(e.cmd, e.returncode)) Если нужно учитывать и поток stderr, то документацией предлается следующий способ: subprocess.check_output("ls file; exit 0", stderr=subprocess.STDOUT, shell=True) Здесь мы явно получаем нулевой код возврата, подавляя поднятие исключения, а также перенаправляем поток stderr на stdout.

Ответ 2



>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"

Комментариев нет:

Отправить комментарий