Ich hab jetzt nämlich doch nicht den Ansatz von Dookie genommen, sondern meine erste Idee, nämlich das ganze über das Modul fileinput zu machen, weiterverfolgt. Aber seht selbst...
Code: Alles auswählen
#!/usr/bin/env python
import os,fileinput,string,sys,math
pfad=os.listdir(os.curdir)
print pfad
zout=4
def read_line(zin):
zout=zin
l_1=[]
l_2=[]
for line in fileinput.input(pfad):
dateiname=fileinput.filename()
dateizeile=fileinput.filelineno()
if dateiname == 'zusammenzieh.py':
pass
elif dateiname == 'ausgabe.txt':
pass
else:
if dateizeile<zin:
pass
else:
data=string.split(line)
a=string.atof(data[0]) #wandelt string in float und schreibt in liste
b=string.atof(data[2])
l_1.append(a)
l_2.append(b)
fileinput.nextfile()
if 0 in l_2:
sigma=0
x=0
else:
sigma=1/(math.sqrt(1/(l_2[0]**2)+1/(l_2[1]**2)+1/(l_2[2]**2)+1/(l_2[3]**2)+1/(l_2[4]**2)))
sum_sigma_square=1/( 1/(l_2[0]**2) + 1/(l_2[1]**2) + 1/(l_2[2]**2) + 1/(l_2[3]**2) + 1/(l_2[4]**2) )
sum_x_sigma_square=l_1[0]/(l_2[0]**2) + l_1[1]/(l_2[1]**2) + l_1[2]/(l_2[2]**2) + l_1[3]/(l_2[3]**2)\
+ l_1[4]/(l_2[4]**2)
x=sum_x_sigma_square * sum_sigma_square
text=str(x) + '\t' + str(sigma)+'\n' #+'\n': fügt dem string einen zeilevorschub hinzu
output=open('ausgabe.txt','a') #a-> neue daten werden immer hinten an geschrieben
output.write(text)
output.close()
return zout
while zout < 304:
read_line(zout)
zout=zout+1
raw_input('Press Enter to terminate')
Grüße, david