繁体   English   中英

fp.read无法读取整个csv文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM