读取带有空行的文件到最后时出错

时间:2014-08-04 15:22:58

标签: python sockets io

我正在尝试逐行读取文件并执行一些操作。问题是,如果我在文件的末尾添加一堆空行,我将得到一个异常(列表索引超出范围)。

def check_ip(address):
  try:
    socket.inet_aton(address)
    return True
  except:
    return False

def myfunction:
    with open(filename, 'r') as f:
      for line in f.readlines():
        if not line: continue
        tokens = line.strip().split()
        if not check_ip( tokens[0]  ): continue
        // do some stuff

1 个答案:

答案 0 :(得分:2)

您的空行测试未考虑空格。

使用:

if not line.strip(): continue

否则你最终会得到这些行的空tokens列表。

在没有参数的情况下使用str.strip()时,您不必调用str.split();该调用已经剥离了前导空格和尾随空格:

tokens = line.split()

请注意,您不需要(也不想)使用f.readlines();您可以直接遍历文件对象

for line in f: