Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Python: zahlenwert aus datei auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.11.2001
    Ort
    Bremen
    Beiträge
    3

    Python: zahlenwert aus datei auslesen

    ich hab ein paar messwerte in verschiedenen dateien, die sehen alle so aus:

    Code:
    * Date = 16.01.2008
    * Meas-UTim = 10:26:02:31 - 10:26:02:29
    * Grating = 3
    * CentrWavelength =  566.00
    * T,Azim,LOS = -30.00    0.00  180.00
    * Exposure-Time =    0.800
    * DA-Modus = 1
    * I = 1
    * J = 20
    * K = 1
    * Detector = CCD_PI4, Lines 1- 25
    * Spectrometer = ARC275
    * SlitWidth = 100
    * N = 1340
    * X-Axis = Pixel
    * Y-Axis = Counts
      1.00000  2.38681600000000E+03
      2.00000  2.53073200000000E+03
    ....
    zum schluss stehen dann die messwerte, wie ich die in ein array bekomme weiß ich schon. aber mich interessiert zeile 6 der exposure wert. wie komm ich nun an diesen zahlenwert ran?
    bei matlab geht das mit fscanf, aber matlab wollte ich eigentlich nicht benutzen...
    Geändert von max_power (20-01-2008 um 18:15 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Hi,

    Code:
    for line in file('daten.txt'):
        arr = line.split('=')
        print arr[1]
        print float(arr[1])
    Ist nur ein schnelles Beispiel. Mit der "split"-Methode kannst du die einzelnen Zeilen auseinander nehmen, wie du es haben möchtest
    Verteilt die Macht, dass sie keinen mächtig macht!

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.11.2001
    Ort
    Bremen
    Beiträge
    3
    wenn ich das richtig verstehe, dann sollte in der liste arr dann die ganzen werte hinter dem '=' stehen.

    wenn ich das durchlaufen lasse, dann stört er sich an dem datum, das ist ja keine fließkommazahl:

    Code:
    In [130]: for line in file('doas_0001_m.DAT'):
        arr = line.split('=')
        print arr[1]
        print float(arr[1])
       .....:
     16.01.2008
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    
    /protokolle/FP/FP20/doas_daten/<ipython console> in <module>()
    
    ValueError: invalid literal for float(): 16.01.2008

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    Zitat Zitat von max_power Beitrag anzeigen
    wenn ich das durchlaufen lasse, dann stört er sich an dem datum, das ist ja keine fließkommazahl:
    Das ist richtig. Das Datum musst Du als String lesen. Ob float() oder nicht hängt also von dem Wert von arr(0) ab (Stichwort "if-Abfrage"). Es lässt sich also nicht ganz vermeiden, dass Du noch ein wenig am Code änderst.

  5. #5
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Beiträge
    112
    Es sollte auch keine Komplettlösung werden, ich wollte nur darauf hinweisen, wie das Problem zu lösen ist

    Wenn du die Zeilen mit split teilst, dann kannst du ja den linken Wert abfragen und den rechten Wert entsprechend behandeln.
    Verteilt die Macht, dass sie keinen mächtig macht!

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.11.2001
    Ort
    Bremen
    Beiträge
    3
    ok, ich habs geschafft!

    nicht schön, aber es funktioniert, für alle die es interessiert:

    Code:
    def exposure(datafile):
    	i = 0
    	for line in file('%s' %datafile):
    		arr = line.split('=')
    		i +=1
    		if i==6: return(float(arr[1]))
    		if i==7: break
    danke für die hilfe
    Geändert von max_power (21-01-2008 um 21:16 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •