通过python运行系统命令而不生成相同的输出

时间:2015-07-31 18:06:30

标签: python subprocess postfix-mta

好的,所以发生这种令人难以置信的奇怪事情。我正在运行python脚本来生成一些输出并将其存储在一个文件中。在脚本的最后,我使用子进程模块通过postfix发送邮件。我跑

subprocess.call(['sudo mail -s "Subject" person@example.com < /path/to/file.txt'], shell=True)

即使文件包含内容,也会执行此消息mail: Null message body; hope that's ok。我收到一封没有正文的电子邮件(但正确的主题)。

当我直接运行命令时:

sudo mail -s "Subject" person@example.com < /path/to/file.txt

我在电子邮件中收到该文件的内容。

这里出了什么问题?它完全搞砸了我的脑袋!

1 个答案:

答案 0 :(得分:0)

正如预期的那样,这是一个完全愚蠢的错误(这些是最好的)。

我没有刷新文件句柄并发送邮件。所以消息体是空的。现在我正在使用

file_name.flush()
file_name.close()
subprocess.call(['sudo mail -s "Subject" person@example.com < /path/to/file.txt'], shell=True)

我收到的邮件有尸体。呼!