截断文本文件的Python 3.3 readlines

时间:2013-03-23 18:46:47

标签: python python-3.3

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

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

countfilename指的是7847行的一个相当冗长的文本文件,它是使用我的机器学习类中的教师给我的脚本从文本文件生成的(我必须将所述脚本转换为Python 3)使用2to3)。

wordlist是我构建的一个简单函数,它接受一行文本并将其中的单词作为列表返回。

我将整个文件拉到一个行列表中,这样我就可以随意引用特定行来计算。我是否使用readlines一次性读取它们或迭代文件并将这些行逐个添加到列表中,如下所示:

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

没关系。无论哪种方式我都这样做,print(len(countlist))给了我大约7630,我说大概是因为有时它低至7628或高至7633countlist[-1]返回的特定行总是不同的(该文件是使用生成器对象构建的,如我所说的构建该脚本,我不完全确定它是如何工作的。)

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

我只是为了看看python认为该文件的最后一行是什么。当我在textpad中打开文件时,它返回的行实际上是len(countlist)返回的行号。换句话说,它似乎忽略了最后的约。我的文件210行。所以我的问题是如何解决这个问题,以及如何阻止它再次这样做?

1 个答案:

答案 0 :(得分:1)

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

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