Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 最有效的方法;“咕噜”;所有的STDIN都成了一个字符串_Python_Python 2.7_Email_Io_Stdin - Fatal编程技术网

Python 最有效的方法;“咕噜”;所有的STDIN都成了一个字符串

Python 最有效的方法;“咕噜”;所有的STDIN都成了一个字符串,python,python-2.7,email,io,stdin,Python,Python 2.7,Email,Io,Stdin,我正在为python 2.7编写一个电子邮件解析器,该解析器将使用别名通过sendmail调用,使用电子邮件模块进行解析,然后进行处理并存储到oracle数据库中: 来自/etc/别名: myalias:|/my/python/script.py 我无法将所有stdin“slurp”成一个字符串对象,我可以将其用于电子邮件模块: import email # Slurp stdin and store into message message = msg = email.message_fr

我正在为python 2.7编写一个电子邮件解析器,该解析器将使用别名通过sendmail调用,使用电子邮件模块进行解析,然后进行处理并存储到oracle数据库中:

来自/etc/别名:

myalias:|/my/python/script.py

我无法将所有stdin“slurp”成一个字符串对象,我可以将其用于电子邮件模块:

import email

# Slurp stdin and store into message
message =

msg = email.message_from_string(message)

# Do something with it
print msg['Subject']
最有效的方法是什么?我尝试了stdin.readlines(),但它最终成为一个列表


谢谢你的帮助。(很抱歉,如果这是noobish…我是一个perl转换程序,被迫使用python标准化我的工具,这只是我的第二个脚本。我不是真的“被迫”,我一直想这么做一段时间了,但不是像现在这样迫于最后期限的压力)

sys.stdin.readlines()
返回一个行列表。如果您想要的是一个长(多行)字符串,请使用
sys.stdin.read()

如果您想用slurp代替sip,请继续读取stdin,直到它返回0字节,否则您将无法处理较大的消息。@tdelaney为什么?你有我能读到的消息来源吗?我刚刚用一个很大的文件<;code>cat~/bash_history<;test.py测试了这一点,第二个sys.stdin.read的长度始终为0。对于Python版本3.7.3.Python不是C。
pydoc sys.stdin.read
说:“如果size参数为负数或省略,则读取直到达到EOF。”