python - 将输出与列表/数组进行比较

标签 python arrays list mx-record

我认为自己是 python 的初学者(以及一般的编程!),但我正在努力通过 Zed A Shaw 的“艰难地学习 python”并放慢拾取东西的速度。 我正在编写一个小脚本来检查域的实时 mx 记录是否符合预期并且没有被更改(长话短说),到目前为止我有以下内容:

import dns.resolver
domain = 'bbc.co.uk'
for x in dns.resolver.query(domain,'MX',):
    print x.to_text()

这使用 dnspython 模块吐出邮件主机和偏好号码。我现在需要做的是将此输出与两个预期结果进行比较,因此对于 bbc.co.uk 来说,它们将是 cluster1a.eu.messagelabs.com。 & cluster1.eu.messagelabs.com。 (他们的顺序根据当前的偏好编号而变化)

我认为最好的方法是将预期的结果添加到数组/列表中,然后让脚本尝试将输出与数组/列表进行比较,并提供真或假的陈述,但是在花费了所有一天尝试不同的代码安排,事实证明这超出了我目前的理解范围。

最终,如果结果为假,我希望它能提醒我自己或我的同事,但这可以等到以后再说,因为我还没有决定实现这一点的最佳方法。 有哪位好心人能给我一个粗略的概述,说明实现我希望的结果的最佳做法是什么?

我感谢任何花时间阅读这篇文章的人:)

谢谢你,克里斯

编辑:这似乎完全符合我的期望,谢谢大家的帮助!

import dns.resolver
domain = 'bbc.co.uk'
expected_responses = ['cluster1.eu.messagelabs.com.', 'cluster1a.eu.messagelabs.com.']
for x in dns.resolver.query(domain, 'MX'):
        if x.to_text().split()[1] not in expected_responses:
                print "Unexpected MX record found!"
        else:
                print x.to_text().split()[1] + " OK!"

最佳答案

你的意思是:

x.to_text() in {'cluster1a.eu.messagelabs.com', 'cluster1.eu.messagelabs.com'}

?

关于python - 将输出与列表/数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347554/

相关文章:

python - 如何将列表与列表列表合并

python - __exit__() (上下文管理器)中的 exc_value 参数是字符串而不是异常(Python 2.6)

python - Databricks 笔记本挂着 pytorch

Python 简洁让我困惑

arrays - 通过数组获取 Firebase 数据

python - 尝试将 'pop' 方法与 Python 中的列表一起使用时出错

python - 内置范围或 numpy.arange : which is more efficient?

c++ - struct() 和数组 C++ 的问题

java - 初始化时增量++运算符如何工作

list - conj 在 Clojure 中的向量和列表上的行为差异