![](/img/trans.png)
[英]open fp = io.BytesIO(fp.read()) AttributeError: 'str' object has no attribute 'read' in PIL/image.py
[英]fp.read not reading entire csv file
我要附加一个csv文件,并将其作为电子邮件发送。 我的其他代码也使用了相同的代码,但是在这种奇怪的情况下,它将截断csv中的数据。 实际的csv为11 kb,但附件为8 kb。 实际文件有1400多行,其中附件只有1100行。
fp = open(path)
msg1 = MIMEText(fp.read())
print os.path.getsize(path)
attachment = msg1.add_header('Content-Disposition', 'attachment', filename=name)
msg.attach(msg1)
print "Attached " + name
fp.close()
问题在这行代码中msg1 = MIMEText(fp.read())
,但是我找不到解决方案。
如果没有原始文件,我们将无法重现您的问题,因此这只是一个猜测。
open('file_path')
的默认行为是以文本模式打开文件。 如果CSV包含EOF(文件结尾)字符,则fp.read()
方法在某些平台上可能不会返回整个文件。
尝试以二进制模式打开CSV:
fp = open(path, 'rb')
[编辑]
我无法重现您的问题。
>>> mt = MIMEText(open('/tmp/test_file.csv').read())
>>> len(mt.as_string().split('\n'))
1165
这与原始文件加上MIME标头的行数完全相同:
$ wc -l /tmp/test_file.csv
1160 /tmp/test_file.csv
请确定并仔细检查重现该问题所需的最短程序,否则该问题可能会结束,因为尽管类似的问题可能在此处引起关注,但如当前所述,此问题不太可能对将来的读者有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.