0

我正在使用 PyDev for Eclipse 使用 Python 3.3,好吧,这是我的代码:

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 认为文件的最后一行是什么。当我在 textpad 中打开文件时,它返回的行实际上是len(countlist). 换句话说,它似乎忽略了最后一个大约。我的文件有 210 行。所以我的问题是如何解决这个问题,以及如何防止它再次这样做?

4

1 回答 1

1

如果您不是从静态文本文件中读取,而是从每次运行程序时生成的文件中读取,则可能是您没有关闭该文件(在这种情况下,可能没有将所有内容写入其中)。如果你不想关闭它,你可以刷新它(.flush() 方法)。

您应该发布生成文件的代码。

于 2013-03-23T20:21:28.977 回答