我试图获取SPF records
的{{1}}并从文件中读取域名。当我尝试获取spf内容并将其写入文件时代码给我从输入文件中获取的最后一个域的结果。
domains
输出,我得到的只是Example `Input_Domains.txt`
blah.com
box.com
marketo.com
marketo.com
如何通过编写我将其归档到文件的所有域的spf内容来解决这个问题,有什么建议吗?
答案 0 :(得分:3)
这是因为你一直在重写full_spf
所以只存储了最后一个值
with open('Input_Domains.txt','r') as f:
for line in f:
full_spf=getspf(line.strip())
<强>修饰:强>
with open('Input_Domains.txt','r') as f:
full_spf=""
for line in f:
full_spf+=getspf(line.strip())+"\n"
答案 1 :(得分:2)
尝试在with
块中使用a generator expression,而不是常规for
循环:
full_spf = '\n'.join(getspf(line.strip()) for line in f)
这会一次抓取所有行,对它们执行自定义getspf
操作,然后将它们与之间的换行连接起来。
这样做的好处是,从概念上讲,您正在对数据进行单一转换。对于采用数据块并逐行处理数据没有任何固有的“循环”,因为它可以按任何顺序完成,所有行都是独立的。通过使用生成器表达式,您将算法表示为单个转换和赋值操作。
编辑:小的疏忽,因为join
需要一个字符串列表,你必须从getspf
函数返回至少一个空字符串,而不是默认为{{1当你没有返回任何东西时。