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]
?
尝试为 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]
?