Текст трубы для скрипта Python или подсказки

Я пытаюсь написать очень простой скрипт электронной почты в python. Это в основном беглый человек. На работе мы отправляем много данных с серверов по всему миру, и было бы намного проще отправить их непосредственно с сервера.

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

$ cat message.txt | emailer.py fandingo@example.com $ tail -n 2000 /var/log/messages | emailer.py fandingo@example.com 

Оба они достаточно легки. Я могу просто sys.stdin.read() и получить свои данные.

Проблема, с которой я сталкиваюсь, заключается в том, что я также хочу поддержать запрос на ввод сообщения со следующим использованием:

 emailer.py --attach-file /var/log/messages fandingo@example.com Enter Your message. Use ^D when finished. >> Steve, >> See the attached system log. See all those NFS errors around 2300 UTC today. >> >> ^D 

Проблема, с которой я sys.stdin.read() , заключается в том, что если я пытаюсь sys.stdin.read() , и нет данных, тогда моя программа блокирует, пока stdin не получит данные, но я не могу распечатать приглашение. Я мог бы сделать безопасный подход и использовать raw_input("Enter Your message. Use ^D when finished.") Вместо stdin.read() , но затем я всегда распечатываю приглашение.

Есть ли способ увидеть, что пользователь отправил текст в python без использования метода, который будет блокироваться?

One Solution collect form web for “Текст трубы для скрипта Python или подсказки”

Вы можете использовать sys.stdin.isatty чтобы проверить, sys.stdin.isatty ли сценарий в интерактивном режиме. Пример:

 if sys.stdin.isatty(): message = raw_input('Enter your message ') else: message = sys.stdin.read() 
  • subprocess.call не работает от pyCharm
  • Быстрый ping sweep в python
  • Слияние файлов csv с разными порядками столбцов удаляет дубликаты
  • Прочитать текущий цвет текста в xterm
  • Чтобы суммировать столбец с условием
  • bash: mkvirtualenv: команда не найдена
  • отправить код из vim во внешнее приложение для выполнения
  • «Escaping» $ при выполнении команды удаленного bash из python fabric
  •  
    Interesting Posts for Van-Lav

    Отключение экземпляра SQLAlchemy, поэтому обновление не происходит

    Python datetime.utcnow () возвращает неверное время

    Чтение аудиоданных в реальном времени в массив numpy

    Наиболее эффективный метод проверки наличия словарного ключа и обработки его значения, если он

    Получить текущую воспроизводимую дорожку

    Как добавить путь импорта Python навсегда?

    Регулярное выражение | REGEX для кодов ICD9

    Python: Сплит CSV-файл в соответствии с первым символом первого столбца

    Скребок: добавьте данные, сохраненные как изображение в файл CSV в python 3.5

    Матричное умножение в python?

    Используя два оператора return в функции (Python 2.7)

    Сценарий python, который активирует virtualenv, а затем запускает другой скрипт python?

    Любые библиотеки yaml в Python, которые поддерживают демпинг длинных строк в виде блочных литералов или сложенных блоков?

    Вопрос Bizzarre, пытающийся сделать Rpy2 2.1.9 работать с R 2.12.1, используя Python 2.6 под Windows xp – Rpy не может найти R.dll?

    Модуль Python дает ошибки форматирования строк

    Python - лучший язык программирования в мире.