在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")
答案 0 :(得分:1)
这只是针对您问题的第一条评论的变体:
with open(filename, 'r') as f:
content = f.read().replace('\n', '\r\n')
之后,您在变量内容中包含文件的内容,并替换换行符。此外,使用with
构造确保您的文件在阅读后正确关闭。
请注意,您有责任确保文件足够小"留在记忆中。如果不确定,您可以按照自己的建议逐行阅读。话虽如此,我起初并不完全明白这有什么问题......