2016-04-25 11 views
0

Ich habe eine Datei aus zu lesen, dass wie folgt aussieht:assign Liste Python Objekt

0.0017224129699045 0.0006501069699993 0.9998957781816742 
    0.1990018751753198 0.0008531972943402 0.0001365339587167 
    0.3985306090674854 0.0004447825187626 0.9994454487115476 
    0.5997635306734566 0.0007689624538330 0.0001887505556155 
    0.8014083650919446 0.0007156269856168 0.9995317401042954 
    0.1999636426048639 0.1995427045657650 0.0017775030876521 

Jede Spalte eines Atoms zeigt koordinieren. Ich möchte Koordinaten als ein Objekt in Python definiert das Atom zuzuordnen:

# The parser 
#!/usr/bin/python3 
def get_pos(): 
    with open("CONTCAR", "r") as finp: 
     for line in finp: 
      for _ in range(6): 
       sdata = finp.readline() 
       tpos.append(sdata.split()) 

    print(tpos) 

Und die aufrufende Funktion ist:

#!/usr/bin/python3 
import parsepos 

class Atom: 
    count = 0 

    def __init__(self, name, pos=[], vel=[]): 
     self.name = name 
     self.pos = pos 
     self.vel = vel 
     Atom.count += 1 
     # self.parse = parsepos.get_pos() 
parsepos.get_pos() 

Dieses mcwe, zeigt die Atome richtig aufgeführt sind, in list tpos, aber ich weiß nicht, wie man diesen Wert atom.pos zuweist.

Bitte helfen.

+0

Mit '#!/Usr/bin/env python3' anstelle von' #!/Usr/bin/python3' finden Sie den Python-Interpreter, egal wo er installiert ist ... – linusg

+1

Warum nicht 'atom.pos = was auch immer' ? –

+0

'Atom.pos = parsepos.get_pos() drucken (Atom.pos)' yeilds 'none' – BaRud

Antwort

1

Standardmäßig gibt eine Funktion in Python None zurück. So stellen Sie get_pos() Rückkehr tpos:

def get_pos(): 
    with open("CONTCAR", "r") as finp: 
     for line in finp: 
      for _ in range(6): 
       sdata = finp.readline() 
       tpos.append(sdata.split()) 

    # print(tpos) 
    return tpos 

und dann wie folgt aus:

Atom.pos = parsepos.get_pos() 
print(Atom.pos) 

hoffe, das hilft!