将文本导入Python脚本或提示符

将文本导入Python脚本或提示符,python,bash,Python,Bash,我正在尝试用python编写一个非常简单的电子邮件脚本。它基本上是穷人的狗。在工作中,我们从周围的服务器发送大量数据,直接从服务器发送数据会容易得多 我被困的部分是处理信息。我希望用户能够执行以下操作: $ cat message.txt | emailer.py fandingo@example.com $ tail -n 2000 /var/log/messages | emailer.py fandingo@example.com 这两个都很简单。我可以sys.stdin.read()并

我正在尝试用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()
,但没有数据,那么我的程序会一直阻塞,直到stdin获得数据,但我无法打印提示。 我可以采取一种安全的方法,使用
原始输入(“输入您的消息。完成后使用^D”)
而不是
stdin.read()


是否有一种方法可以查看用户是否在不使用会阻塞的方法的情况下将文本导入python?

您可以使用
sys.stdin.isatty
检查脚本是否以交互方式运行。例如:

if sys.stdin.isatty():
    message = raw_input('Enter your message ')
else:
    message = sys.stdin.read()

您看到
邮件
命令了吗?我们将主要使用它来附加文件。没有uuencode的邮件是没用的,我们没有。谢谢zeekay。虽然我认为这很简单。