带有if语句的python编辑文件

时间:2014-06-04 15:51:35

标签: python python-2.7

我想使用python脚本检查和编辑某些ns区域文件,因为它们缺少字符串开头的“@”符号

            IN      MX    10 mail.example.com

我需要澄清一下如果在'IN'之前验证是否没有任何其他字符串或字符,只需要空格。

这是我的代码

with open("zone_file.zone", "r+") as file:
    for line in file:
        string = line.lstrip()
        if line.lstrip().startswith('IN     MX'):
            line = "@"+line[1:]
            file.write(line)

但它什么都不做

基本上代码是

for line in file:
   if str in line:
      line= "@"+line[1:]

但我需要检查IN字符串

之前是否存在字符

编辑:  我有:

                IN      MX

我想要

@               IN      MX

但空白空间不固定

edit2:IN和MX之间的空间也没有固定,所以我想不出来解决。

这是我所拥有的一个例子

              IN      MX    20 mail2.example.com. 
              IN  MX    50 mail3              
example.com.  IN      A     192.0.2.1             
              IN      AAAA  2001:db8:10::1       
ns            IN  A     192.0.2.2             
              IN      AAAA  2001:db8:10::2      

编辑3:这是我更新的代码,但它还没有工作

with open(filename, 'r+') as f:
    file_di_zona = f.readlines()
    for line in file_di_zona:
        if line.lstrip().startswith('IN') and 'MX' in line:
            line = '@' + line[1:]
            #print line
            file_di_zona.write(str(line))

1 个答案:

答案 0 :(得分:1)

for line in file:
    if line.lstrip().startswith('IN') and 'MX' in line:
       line = "@"+line[1:]
       file.write(line)

最佳解决方案,因为如果你有大文件,这将读得很好并且比正常更快地改变它

import sys

for line in sys.stdin:
   if line.lstrip().startswith('IN') and 'MX' in line:
       line = '@' + line[1:]
   print line

保存它,因为它在python文件test.py

现在转到文件夹打开终端注意test.py和ur区域文件应该在同一目录中或者给出正确的路径来读取文件

打印命令

python test.py < zone_file.zone > modifiedzone.zone