Python - 索引超出范围

Python - index out of range

尝试为 bash 脚本改编基本分析器,代码块如下。

无法弄清楚为什么使用 "if branch" 分析代码会抛出异常(例如,当 运行 这个 code 有一个重复文件时)。根据我的追踪,它在某处创建了一个额外的索引值。如果这是微不足道的,我很抱歉,因为我是 Python 的新手,但如果您能提出任何关于问题出在哪里或如何解决的建议,我们将不胜感激

def collect_timings(profiled_line, i):
    if i == len(results) - 1:
        return [0] + profiled_line
    timing = float(results[i+1][1].replace(".N", "")) - float(profiled_line[1].replace(".N", "")) 
    return [timing] + profiled_line

错误:

Traceback (most recent call last):
  File "./profile", line 67, in <module>
    main(sys.argv)
  File "./profile", line 51, in main
    profiling_time = map(collect_timings, results, range(len(results)))
  File "./profile", line 24, in collect_timings
    timing = float(results[i+1][1].replace(".N", "")) - float(profiled_line[1].replace(".N", ""))
IndexError: list index out of range

找到答案,张贴以防对某人有用。 问题是输出重定向:

echo "Found '$file' is a duplicate of '${filecksums[$cksum]}'" >&2 

作为单独的条目传递给 results

["Found 'txt2/0122file.bck' is a duplicate of 'txt2/0113file.txt'\n"]

不知道如何使代码 运行 带有重定向,但这不是必需的,所以我会避免它。

你说:

if i == len(results) - 1:

下面你说:

timing = float(results[i+1][1].replace(".N", ""))

所以你检查 "i" 是否显示结果数组的最后一个元素(即结果有 5 个从 0 到 4 的单元格,你检查是否 i == 4( len(results) == 5 in this case AND NOT 4) ) 然后你说 results[i+1] 在上面的例子中等于 results[5] 这是越界的。

也许你的意思是 results[i]