我正在为Python 2.7编写一个电子邮件解析器,它将通过别名调用sendmail,使用email模块进行解析,然后处理并存储到Oracle数据库中:
来自/etc/aliases:
myalias: | /my/python/script.py
我遇到了一个问题,“吞入”所有标准输入(stdin)并将其转换成一个字符串对象,以便我可以与电子邮件模块一起使用:
import email
# Slurp stdin and store into message
message =
msg = email.message_from_string(message)
# Do something with it
print msg['Subject']
怎么才能最有效地做到这一点?我尝试过使用 stdin.readlines() 但它输出的是一个列表。
感谢任何帮助。(如果我显得很菜鸟请原谅...我曾经使用 Perl,现在被迫使用 Python 标准化我的工具,并且这是我的第二个脚本。其实并不是真正的“被迫”,我早就想这样做了,只是没有像现在这样在期限的压力下)
cat ~/bash_history | test.py
测试了一下,这是一个很大的文件,第二个 sys.stdin.read 的长度总是为0。这是在 Python 版本 3.7.3 中测试的。 - Wispydoc sys.stdin.read
说:“如果省略或者size参数为负数,那么会一直读取直到EOF(文件结束符)被读取。” - Sam Watkins