Я пытаюсь написать очень простое электронное письмо script в python. Это в основном бедный человек. На работе мы отправляем много данных с серверов по всему миру, и было бы намного проще отправить их непосредственно с сервера.
Часть, на которую я застрял, имеет дело с сообщением. Я хочу, чтобы пользователи могли выполнять следующие действия:
$ cat message.txt | emailer.py [email protected]
$ tail -n 2000 /var/log/messages | emailer.py [email protected]
Оба из них достаточно просты. Я могу просто sys.stdin.read()
и получить мои данные.
Проблема, с которой я столкнулась, заключается в том, что я также хочу поддержать приглашение для ввода сообщения со следующим использованием:
emailer.py --attach-file /var/log/messages [email protected]
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()
, и нет данных, тогда моя программа блокирует, пока stdin не получит данные, но я не могу распечатать приглашение.
Я мог бы сделать безопасный подход и использовать raw_input("Enter Your message. Use ^D when finished.")
вместо stdin.read()
, но затем всегда распечатываю приглашение.
Есть ли способ увидеть, что пользователь отправил текст в python без использования метода, который будет блокироваться?