Python 3.3 读取行时截断文本文件

0 投票
1 回答
770 浏览
提问于 2025-04-17 20:04

我正在使用Python 3.3和Eclipse中的PyDev进行编程。好吧,这是我的代码:

countdata = open(countfilename, 'r')
countlist = countdata.readlines()
print(len(countlist))
genecountline = wordlist(countlist[-1])
print(genecountline)

countfilename指的是一个比较长的文本文件,里面有7847行,这个文件是通过我在机器学习课上老师给我的脚本生成的(我确实需要用2to3把这个脚本转换成Python 3)。

wordlist是我自己写的一个简单函数,它接收一行文本并把里面的单词作为列表返回。

我把整个文件读入一个行列表中,这样我就可以随意引用特定的行来进行计算。无论是一次性用readlines读取所有行,还是像这样逐行读取并把每一行添加到列表中:

countdata = open(countfilename, 'r')
countlist = []
for line in countdata:
    countlist.append(line)

其实都没关系。无论我用哪种方式,print(len(countlist))大约会给我7630,我说是大约,因为有时候它会低到7628,有时候又高到7633。而且通过countlist[-1]返回的具体行总是不同(这个文件是用生成器对象构建的,正如我老师提到的,我不太确定它具体是怎么工作的)。

genecountline = wordlist(countlist[-1])
print(genecountline)

我放这个只是想看看Python认为文件的最后一行是什么。当我在文本编辑器中打开文件时,它返回的行确实是len(countlist)返回的行号。换句话说,它似乎忽略了我文件最后大约210行的内容。所以我的问题是,怎么解决这个问题,如何防止它再次发生?

1 个回答

1

如果你不是从一个固定的文本文件中读取数据,而是从每次运行程序时生成的文件中读取,那可能是因为你没有关闭这个文件(这样的话,可能并不是所有内容都写入了文件)。如果你不想关闭它,可以使用一个叫做.flush()的方法来强制把内容写入文件。

你应该把生成这个文件的代码发出来。

撰写回答