You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过邮件发送Polars DataFrame并展示类似print(df)的输出效果?

如何通过邮件发送Polars DataFrame并展示类似print(df)的输出效果?

嘿,针对你的需求,我给你两个实用的方案,看你更偏向哪种效果~

方案一:纯文本格式发送(完美匹配print(df)的效果)

既然你想要的是和print(df)完全一样的输出效果,那直接把DataFrame转成纯文本字符串发送是最直接的,还能避开你遇到的编码问题。具体步骤很简单:

  • 用str(df)或者df.to_string()把Polars DataFrame转成和控制台打印完全一致的字符串
  • 构造邮件时指定utf-8编码,避免非ASCII字符的编码错误

给你个现成的代码示例:

import polars as pl
from email.mime.text import MIMEText
import smtplib

# 先搞个示例DataFrame(替换成你自己的)
df = pl.DataFrame({
    "商品名称": ["苹果", "香蕉", "橙子"],
    "库存数量": [50, 30, 70],
    "单价": [8.5, 3.2, 5.0]
})

# 转成和print(df)一模一样的字符串
df_plain_text = str(df)

# 构造纯文本邮件,核心是指定utf-8编码
msg = MIMEText(df_plain_text, 'plain', 'utf-8')
msg['Subject'] = "你的Polars DataFrame数据"
msg['From'] = "你的邮箱@example.com"
msg['To'] = "收件人邮箱@example.com"

# 发送邮件(替换成你自己的SMTP服务器配置)
with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp_server:
    smtp_server.login('你的邮箱账号', '你的邮箱密码/授权码')
    smtp_server.send_message(msg)

这个方案的好处就是完全还原你在控制台看到的DataFrame样子,而且编码问题直接用utf-8解决,不会再出现ascii编码失败的报错。

方案二:修复HTML格式的编码问题(适合想要美观表格的场景)

如果你还是想用HTML格式展示(比如想要带样式的表格),那之前的报错是因为邮件没有用utf-8编码导致的,只需要在构造邮件时指定编码即可。

代码示例:

import polars as pl
from great_tables import GT
from email.mime.text import MIMEText
import smtplib

# 示例DataFrame
df = pl.DataFrame({
    "商品名称": ["苹果", "香蕉", "橙子"],
    "库存数量": [50, 30, 70],
    "单价": [8.5, 3.2, 5.0]
})

# 用great_tables生成HTML表格
gt_table = GT(df)
df_html = gt_table.as_raw_html()

# 构造HTML邮件,同样要指定utf-8编码
msg = MIMEText(df_html, 'html', 'utf-8')
msg['Subject'] = "你的Polars DataFrame表格(HTML格式)"
msg['From'] = "你的邮箱@example.com"
msg['To'] = "收件人邮箱@example.com"

# 发送邮件
with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp_server:
    smtp_server.login('你的邮箱账号', '你的邮箱密码/授权码')
    smtp_server.send_message(msg)

这里的关键就是在MIMEText里明确指定'utf-8'作为编码,这样非ASCII字符就能正常编码发送了,不会再出现之前的报错。

备注:内容来源于stack exchange,提问作者Andi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:49:48