将变量的内容写入文件

时间:2015-08-17 06:28:14

标签: python

我试图获取SPF records的{​​{1}}并从文件中读取域名。当我尝试获取spf内容并将其写入文件时代码给我从输入文件中获取的最后一个域的结果。

domains

输出,我得到的只是Example `Input_Domains.txt` blah.com box.com marketo.com

marketo.com

如何通过编写我将其归档到文件的所有域的spf内容来解决这个问题,有什么建议吗?

2 个答案:

答案 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当你没有返回任何东西时。