Ich bin ein absoluter Python Newbie und habe im Endeffekt nur das Skript eines Kollegen als Vorlage genommen.
Ich habe folgendes Problem:
Ich habe txt files die ungefaehr so aufgebaut sind:
Im Endeffekt ist eine lange Liste dieser 'Chunks' und 'Cubes' am Stueck aufgereiht.----- Begin chunk -----
blablabla
Image filename: /path/filename
blablabla
----- Begin Cube
Cell parameters 12.89394 12.88293 12.90142 nm, 90.00000 90.00000 90.00000 deg
astar = +0.0012237 -0.0648252 +0.0437038 nm^-1
bstar = -0.0024479 -0.0436801 -0.0666936 nm^-1
cstar = +0.1851175 -0.0054972 -0.0088617 nm^-1
blablabla
----- End Cube
----- End Chunk -----
Nun will ich im Endeffekt 'Cubes' mit aehnlichen Groessen clustern - d.h. die Zahlen 'astar bstar cstar' aus einem chunk lesen und mit allen anderen chunks vergleichen.
D.h. ich will zum Schluss eine Liste mit den 'Image filenames' und dahinter eine Cluster Nummer, wonach sortiert wird.
Dazu habe ich bisher folgendes script, wobei ich lediglich astar bstar und cstar einlese:
Code: Alles auswählen
#!/usr/bin/python
FileName1='cubes.stream'
##### Opening files #####
import os
from numpy import *
print 'ok'
g=open('%s'%FileName1,'r')
line1=g.readlines()
g.close()
ax=[]; ay=[]; az=[]; bx=[]; by=[]; bz=[]; cx=[]; cy=[]; cz=[];
index_list=[]; filename=[];
for i in range(0,len(line1)):
if line1[i]=='Image filename':
filename+=[float(line1[i].split()[3])]
if line1[i][0:5]=='Cell ':
ax+=[float(line1[i+1].split()[2])]
ay+=[float(line1[i+1].split()[3])]
az+=[float(line1[i+1].split()[4])]
bx+=[float(line1[i+2].split()[2])]
by+=[float(line1[i+2].split()[3])]
bz+=[float(line1[i+2].split()[4])]
cx+=[float(line1[i+3].split()[2])]
cy+=[float(line1[i+3].split()[3])]
cz+=[float(line1[i+3].split()[4])]
##### Writing results #####
g=open('%s_Results.txt'%FileName1[:-7],'w')
g.write('ax: %f', %ax)
g.write('ay: %f', %ay)
g.write('az: %f', %az)
g.close
Bisher spuckt er mir nur die Zahlenwerte aus, ich will aber nun von chunk zu chunk vergleichen. Auch ist die Zeile 'filename+=[float(line1.split()[3])]' falsch, da dort kein float hingehoert.
Ich weiss, ihr seid nicht dazu da meine Aufgaben zu loesen, ich haette nur gerne eine 'Starthilfe' in welche Richtung ich gehen sollte. Bzw. wie man am besten diese Zahlen mit Toleranz vergleicht.
Vielen Dank schonmal im Voraus
Cornelius