首页 > 解决方案 > Python - 为什么我的 for 循环跳过行并且没有到达文件末尾?

问题描述

我正在编写一个简单的函数,它获取文本文件的路径并返回该文件中包含的行数。

我确保使用 file.seek(0) 将文件指针设置为开头。

def get_number_lines(file_dir):

    exists = os.path.isfile(file_dir) 
    if (exists):
        print(file_dir)
        line_count = 0
        read_file  = open(file_dir,'r')
        read_file.seek(0)
        for line_num, line in enumerate(read_file.readlines()):
            line_count = line_num
            print(line)
        read_file.close()

        return (line_count + 1)
    else:
        print("ERROR: FILE \"" + file_dir + "\" does not exist.")
        exit()

奇怪的是,当我尝试调用该函数时,它运行正常,但输出告诉我我的文件比实际短 3 行。当我打印文件行时,它似乎跳过了文件的最后 3 行,我不知道为什么。

标签: pythonpython-3.xfor-loopreadline

解决方案


我已经使用“with open”而不是 read_file.seek 测试了下面的代码。

个人意见,但它更适合阅读 .txt 文件。该函数将返回在给定函数的路径中找到的行数。如果它不是一个存在的文件,它将出错并退出。

def Get_Number_Lines(file_dir):
    exists = os.path.isfile(file_dir) 
    if (exists):
        print(file_dir)
        line_count = 0

        with open(file_dir, 'rb') as fin:

            reader = fin.readlines()

            for line in reader:
                line_count += 1

        return line_count

    else:
        print("ERROR: FILE \"" + file_dir + "\" does not exist.")
        exit()

推荐阅读