В одной и той же программе можно принимать как ввод по каналу, так и ввод пользователя.
Самый простой способ справиться с этим - с помощью модуля subprocess
.Вы выполняете программу из вашей программы Python.Аргументы для него позволяют вам устанавливать каналы и / или из программы, которую вы выполняете.
Это просто.Это стандартно.Это работает хорошо.
То же самое верно для принятия файла через аргументы программы.Это просто.Это стандартно.Это работает хорошо.Как дополнительное преимущество, в Windows CMD.EXE / COMMAND.COM автоматически использует временные файлы для каналов.Вы не получаете никакой выгоды от того, что делаете что-то более сложное из-за того, что DOS / Windows не поддерживают настоящие каналы.
Я знаю, что клиентский код командной строки mysql принимает пароль от пользователя перед обработкой вводимого по трубопроводу ввода.Решение Linux (и, вероятно, Mac OS X) для этого, вероятно, похоже на то, что опубликовал Nemo.Если это действительно то поведение, которое вам действительно нужно, и вы не заботитесь о Windows, это решение для использования.(Для Windows вам нужно использовать что-то вроде пакета wconio. - http://newcenturycomputers.net/projects/wconio.html)
- это , который может иметь пользовательский ввод и принимать конвейерный вывод, идущий для другая программа. Существует три стандартных дескриптора файла: stdin, stdout и stderr. Вы можете писать в stderr, даже когда stdout перенаправляется в файл.