从 Jython 中的文件中读取行

Reading lines from a file in Jython

好吧,我知道这听起来像是一道作业题(因为有点像),但我们的讲师让我们陷入了困境,我需要一点帮助,我的 google-fu 失败了。 作为作业的一部分,我需要从文本文件中读取数据,并将文本文件的每一行复制到 array/list 中。我所做的是行不通的。 我目前拥有的:

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

  lines = []
  index = 0

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

但这会返回: 错误值为:列表赋值索引超出范围序列索引超出范围。您使用的索引超出了该数据的大小(太低或太高)。例如,也许您尝试访问 OurArray[10],但 OurArray 中只有 5 个元素。

非常欢迎任何帮助!

问题出在 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

您不能像这样扩展 list,如果您的列表为空 (lines = []),则 lines[index] 会尝试访问不存在的索引,因此会引发错误。

如果您想在列表中添加内容,请使用 append 函数:

lines.append(line)

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

lines = file.readlines()

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

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

lines = [line for line in open("file.txt")]

此处每行将有 \n 个字符。要删除该用途,line.rtrim('\n')