我正在尝试逐行读取文件并执行一些操作。问题是,如果我在文件的末尾添加一堆空行,我将得到一个异常(列表索引超出范围)。
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
答案 0 :(得分:2)
您的空行测试未考虑空格。
使用:
if not line.strip(): continue
否则你最终会得到这些行的空tokens
列表。
在没有参数的情况下使用str.strip()
时,您不必调用str.split()
;该调用已经剥离了前导空格和尾随空格:
tokens = line.split()
请注意,您不需要(也不想)使用f.readlines()
;您可以直接遍历文件对象:
for line in f: