readlines没有在python中读取文件的最后一行

rai*_*ain 2 python

我有一个代码,我正在使用readlines函数从文件中读取所有行,我正在进一步解析列表中的每一行.但是当我打印列表时,我看到循环忽略了文件中的最后一行.当我在文件中插入一个空行时,将读取所有内容.你能不能告诉我它为什么这样做

def readFile1(file1):
    f = file1.readlines()
    cList1 = []
    for line in f:
        if re.findall('\n',line):
            v = re.sub('\n','',line)
        cList1.append(v)

    print cList1
Run Code Online (Sandbox Code Playgroud)

这是打印除文件最后一行之外的所有内容.

NPE*_*NPE 11

如果最后一行没有以换行符结尾,则代码不会将其添加到cList1.相反,它会添加倒数第二行的第二个副本(仍然存储在其中v).

编写该循环的更简洁方法是:

cList1 = []
for line in f:
    cList1.append(line.rstrip('\n'))
Run Code Online (Sandbox Code Playgroud)

或者,确实:

cList1 = [line.rstrip('\n') for line in f]
Run Code Online (Sandbox Code Playgroud)

事实上,我会readlines()完全避免这个电话:

def readFile1(file1):
    cList1 = [line.rstrip('\n') for line in file1]
    print cList1
Run Code Online (Sandbox Code Playgroud)