Определите, когда скрипт python ожидает ввода вручную

Я пишу скрипт оболочки, который выполняет скрипт Python. Сценарий Python останавливается, чтобы ввести ручной ввод. Тем не менее, я не хочу, чтобы каждый раз вводить текст в сценарий. Вместо этого я хочу передать ручной ввод из исполняемого сценария оболочки.

Просьба помочь, если есть способ сделать это?

One Solution collect form web for “Определите, когда скрипт python ожидает ввода вручную”

Если требуется только один ввод, просто используйте echo и канал:

 echo | python script.py 

echo печатает пустую строку (с новой строкой) до стандартного вывода, а затем перенаправляет ее на вход скрипта Python, используя | , Когда Python читает со стандартного ввода, он получит пустую строку и продолжит.

Если скрипт хочет более одного нажатия, вы можете использовать команду yes и pipe:

 yes "" | python script.py 

Команда yes выводит одну и ту же строку на стандартный вывод снова и снова навсегда. По умолчанию строка равна y , но здесь мы делаем ее пустой строкой, так что это просто символы новой строки навсегда.


Если ввод требуется как ответ на конкретное приглашение, а в другое время вам нужен другой ввод, используйте expect , который является «расширением Tcl, которое позволяет автоматизировать взаимодействие с интерактивными программами».

Можно написать сценарий оболочки, чтобы он читал с вывода Python и создавал для него новый вход, но я не рекомендую его особо. Если вы хотите это сделать, см. Перенаправление ввода-вывода в Руководстве по разработке сценариев Advanced Bash : вам нужно будет клонировать файловые дескрипторы для этого. Вы также можете использовать mkfifo и создавать именованные файлы pipe, затем читать и записывать их нормально.

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

  • Как отправить часть данных через канал / файл, а затем в интерактивном режиме?
  • Являются ли unix программы способными определять, где их выход идет?
  • tee stdout to stderr?
  • bash scripting - читать архив из stdin
  • Процесс приостанавливается при асинхронном запуске
  • Необходимо перенаправить ввод из файла, а также из tty
  • Как stdin обрабатывается в этом сценарии bash?
  • Запуск локального скрипта с локальным файлом ввода на удаленном хосте
  • Возьмите образец из файла или потока?
  • Как перенаправление файлов bash на стандарт отличается от shell (`sh`) в Linux?
  • cat STDIN не будет работать дважды в скрипте
  • Interesting Posts

    Почему конфигурация конфигурации сервера NVIDIA X не сохраняется при перезагрузке?

    Сбросить STDOUT FD в ловушку

    как включить qcserial модуль в ядро?

    Чтобы улучшить это регулярное выражение о разделении цифр

    Можете ли вы создать volumegroup в LVM, чтобы все логические тома, созданные под ним, были тонко подготовлены?

    Ограничение общего размера vfs_recycle samba путем обрезания самых старых удаленных файлов

    Вывод команды ls, запутанной для исходного изображения KVM на XFS

    Linux: невозможно открыть / dev / dsp

    Почему rsync не использует дельта-переводы для одного файла по сети?

    Экспорт и импорт сертификата ssl из cpanel для самостоятельного управления хостингом

    Python не может импортировать OpenSSL

    Debian: работа в Cron не срабатывает

    .bashrc пользовательский дополнительный пароль и SCP не работает, (вторичный пароль SSH)

    Как я могу узнать, что делает мой SLAB Unreclaimable Memory Grow без границ

    Простое перемещение каталога внутри другого с помощью mv

    Linux и Unix - лучшая ОС в мире.