我可能错过了这里显而易见的,如果是这样,请原谅noob(我是)的问题。我正在尝试遍历文本文件中的行。第一个for
可以正常工作,但是第二个for
不行。print(eachLine)
命令不打印任何内容,newY
列表的结果是一个空列表(因为它已经初始化)。我所做的所有调试(下面只是最新的)都指出第二个for
根本没有被访问。我错过了什么?你知道吗
编辑:有一个类似的问题here,但是在这个问题中有嵌套的循环,错误是用户在嵌套的循环中引用了相同的行。我正试着从头开始,一遍又一遍地浏览这个文件。你知道吗
import os
os.chdir ('d:\Documente\python tests')
def plotRegression(myFile):
lineCounter=0
sumX=0
sumY=0
sumXY=0
sumX2=0
newY=[]
for eachLine in myFile:
coords=eachLine.split()
lineCounter=lineCounter+1
sumX=sumX+float(coords[0])
sumY=sumY+float(coords[1])
sumXY=sumXY+float(coords[0])*float(coords[1])
sumX2=sumX2+float(coords[0])**2
avgX=sumX/lineCounter
avgY=sumY/lineCounter
m =(sumXY-lineCounter*avgX*avgY)/(sumX2-lineCounter*avgX**2)
for eachLine in myFile:
print (eachLine)
coords=eachLine.split()
newY.append(avgY+m*(coords[0]-avgX))
return (avgX, avgY,sumXY, sumX2, m, newY)
def Main():
dataFile = open("labdata.txt","r")
print (plotRegression(dataFile))
dataFile.close()
Main()
您需要使用^{} 将文件读取位置倒带到开头:
文件是流;读取或写入文件会将文件指针推进到新位置。遍历文件逐行读取也不例外。一旦您读取了文件中的所有行,文件位置将一直保留在末尾,再次迭代将不会产生任何附加信息。你知道吗
最好是处理文件中的所有信息并将其存储在内存中,只读取一次。与访问内存中的相同信息相比,文件读取是一个缓慢的过程。在这种情况下,您只需要使用每行中的第一个值;在第一个循环中读取时存储该值:
相关问题 更多 >
编程相关推荐