[英]Index error out of range python
由于某些原因,尝试运行以下代码时出现此错误
#!/usr/bin/python
import matplotlib.pyplot as plt
x = []
y = []
readFile = open('Out_0_0.txt','r')
sepFile = readFile.read().split('\n')
readFile.close()
for plotPair in sepFile:
xandy = plotPair.split()
x.append(int(xandy[0]))
y.append(int(xandy[1]))
print x
print y
当我删除x.append和y.append行并仅放置一条print语句以打印出xandy中的内容时,它会很好地打印出数组中的每对值。 文本文件有这个
1 2
3 4
5 6
7 8
我要做的就是将第一列存储在x数组中,将第二列存储在y数组中
问题在于您如何读取文件。
这将起作用。
x = []
y = []
with open('test.txt','r') as data_file:
for plot_pair in data_file:
xandy = plot_pair.split()
x.append(int(xandy[0]))
y.append(int(xandy[1]))
print(x)
print(y)
在诸如Notepad ++之类的编辑器中打开文件,并确保要读取的文件的开头或结尾没有多余的行。
您可以更有效(更安全)地阅读本文档。 我第一个变化是使用with
在文件中读取时。 完成处理后,它将自动处理关闭文件。
接下来,我删除了split('\\n')
因为它不是必需的。 相反,我们将逐行循环遍历文件,并仅在空白处将其拆分。 由于这是一个两列文件,因此我们将在此行中执行以下操作:
fx,fy = line.split()
我将其放在try / except中,以防文件末尾有空行。 这将产生ValueError
,并且假设这是文件的结尾。
然后,将行的列附加到最终数组。
x = []
y = []
with open('test.txt') as f:
for line in f:
try:
fx,fy = line.split()
except ValueError:
break
x.append(int(fx))
y.append(int(fy))
print x
print y
打印输出:
[1, 3, 5, 7]
[2, 4, 6, 8]
最后,我删除了matplotlib导入。 此示例不是必需的。
快速的东西...应该工作(未经严格测试的:P)
x = []
y = []
with open(inputFile, 'r') as f:
for line in f:
nextX, nextY = map(int, line.split(' '))
x.append(nextX)
y.append(nextY)
另一个快速思考:确保txt文件最后没有空行。 也许添加一条if line:
检查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.