Python:如何以DOS格式发送附加的Unix文件

时间:2014-07-07 17:35:44

标签: python smtplib

在Unix服务器上,我在python中使用smtplib向自己发送电子邮件;该电子邮件还包含一个unix文件附件。我使用Outlook客户端查看电子邮件,当我打开文件时,由于Unix和DOS格式不同,它无法正确显示。
无论如何使用smtplib以DOS格式发送Unix文件? 我不想使用unix2dos,因为我不想在文件系统上创建/修改文件。

根据高级会员的建议编辑问题以包含更改

由于我被要求修改文件,需要知道是否有更简单的方法来执行此操作。我不熟悉Python,所以请耐心等待。我尝试过以下几种变体,但没有一种有效。我的要求是我不想写入文件系统。我想将更改保存到内存中的变量中。

import string
fo=open(filename,"r")
filecontent=fo.readlines()
for line in filecontent:
  line = string.replace(line,"\n","\r\m")

1 个答案:

答案 0 :(得分:1)

这只是针对您问题的第一条评论的变体:

with open(filename, 'r') as f:
    content = f.read().replace('\n', '\r\n')

之后,您在变量内容中包含文件的内容,并替换换行符。此外,使用with构造确保您的文件在阅读后正确关闭。

请注意,您有责任确保文件足够小"留在记忆中。如果不确定,您可以按照自己的建议逐行阅读。话虽如此,我起初并不完全明白这有什么问题......