如何发送一个打印成email python的json对象

2024-10-02 10:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它以json的形式获取集群运行状况,并向我发送一封邮件。问题是json没有很好地打印出来。 以下是我已经尝试过的方法:

  1. 简单-->;json.dumps文件(健康)
  2. 在json.dumps文件(运行状况,缩进=4,排序键=True)

但是gmail的输出仍然是未格式化的,有点像这样

{ "active_primary_shards": 25, "active_shards": 50, "active_shards_percent_as_number": 100.0, "cluster_name": "number_of_pending_tasks": 0, "relocating_shards": 0, "status": "green", "task_max_waiting_in_queue_millis": 0, "timed_out": false, "unassigned_shards": 0 }

邮件已发送到gmail


Tags: 文件方法脚本jsontruenumber排序邮件
2条回答
>>> import json
>>> s = json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
>>> print s
{
    "4": 5, 
    "6": 7
}

我的工作很好 Python 2.7.3(默认值,2015年1月17日,17:10:37) [GCC 3.4.5 20051201(Red Hat 3.4.5-2)]关于linux2

可能是版本相关的,发布你的版本和输出

我不能确定,但看起来你的电子邮件发送代码默认为发送“HTML”电子邮件,并且在HTML中连续的空格折叠成一个,这样HTML代码如下:

<p>
    This is a paragraph, but it's long so
    I'll break to a new line, and indented
    so I know it's within the `p` tag, etc.
</p>

看起来像是“这是一个段落,但是它很长,所以我将换行,并缩进,这样我就知道它在p标记内,等等。”。在

所以,我认为你的两个选择是:

  1. 更改电子邮件发送代码以将Content-type头作为text/plain发送,或
  2. 将所有空格替换为&nbsp;(非分隔空格)字符,换行符替换为<br>(换行符),例如:

    email_body = json.dumps(
        health, indent=4, sort_keys=True).replace(' ', '&nbsp;').replace('\n', '<br>')
    

相关问题 更多 >

    热门问题