出于某种原因,我在尝试运行以下代码时遇到此错误
#!/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数组中
答案 0 :(得分:4)
问题在于你如何阅读文件。
这样可行。
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)
答案 1 :(得分:3)
在Notepad ++等编辑器中打开文件,确保您正在阅读的文件的开头或结尾没有多余的行。
答案 2 :(得分:3)
您可以更有效(且安全)地阅读此内容。我做的第一个更改是在阅读文件时使用with
。这将在您完成后自动处理关闭文件。
接下来,我已删除split('\n')
,因为它不是必需的。相反,我们将逐行循环遍历文件,然后将其拆分为空格。由于这是一个两列文件,我们将使用以下行来执行此操作:
fx,fy = line.split()
我在尝试中坚持这个/除非文件末尾有空行。这将生成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导入。这个例子并不需要。
答案 3 :(得分:1)
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:
支票。