从Jython中的文件中读取行

时间:2015-08-17 11:25:29

标签: python file io jython

好吧,我知道这听起来像是一个家庭作业问题(因为它有点像),但是我们的讲师已经把我们推向了深处,我需要一些帮助,我的谷歌也失败了。 作为赋值的一部分,我需要从文本文件中读取数据,并将文本文件的每一行复制到数组/列表中。我所做的不起作用。 到目前为止我所拥有的:

def main():
  file = open(pickAFile())

  lines = []
  index = 0

  for line in file:
    lines[index] = line
    index = index + 1

但是这回来了: 错误值为:列表分配索引超出范围序列索引超出范围。您使用的索引超出了该数据的大小(太低或太高)。例如,您可能尝试访问OurArray [10],而OurArray只有5个元素。

欢迎任何帮助!

3 个答案:

答案 0 :(得分:1)

问题在于lines[index] = line行。第一次迭代中lines[0]没有任何内容。

您需要将此行更改为lines.append(line),并且您不需要在index之后跟踪,因此您的整个代码应如下所示:

def main():
    file = open(pickAFile())

    lines = []

    for line in file:
        lines.append(line)

append将其收到的参数添加到调用它的列表中的最后一个索引,请参阅the docs

答案 1 :(得分:0)

如果您的列表为空(list),则无法像这样扩展lines = [],那么lines[index]正在尝试访问非现有索引,从而引发错误。

如果您想在列表中附加内容,请使用append功能:

lines.append(line)

但是如果你想阅读文件中的所有行,你最好使用readlines方法:

lines = file.readlines()

答案 2 :(得分:0)

要将文件读入列表,您可以尝试:

{product , 111 video , 222  countdown , 333}

with open("file.txt") as f:
    lines = f.readlines()

此处每行都有lines = [line for line in open("file.txt")] 个字符。要删除该用途,\n