Seite 1 von 1

Bearbeiten und darstellen von txt-files

Verfasst: Donnerstag 2. Oktober 2014, 14:59
von Lienz20013
Hallo und Grüße ich habe ein Problem und zwar habe ich bis jetzt folgenden code:

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

import re
import numpy as np
import matplotlib.pyplot as plt
import glob 
import os.path



begin_file = open('Neuer_Ordner\Anfang_Messungen.txt','r')
for line in begin_file:
    begin_wert = line.split()
    
    
    
    
#==============================================================================
files = glob.glob("*.txt")
#print(files)
for j in range(len(files)):    
    datei = files[j]
    in_file = open(datei)
         
    text = in_file.read()

    s=re.findall(r'.*p9.*$',text,re.MULTILINE)                                    #suchen nach p9 und die spalten danach
    del s[0:2]                                                                     #ersten beiden Zeilen weg wegen beschreibung
    
        #Numpy kann aus einer Liste ein 1D-Array erzeugen.
        #Aus einer Liste von Listen oder einer Liste von 1D-Arrays
        #kann Numpy ein 2D-Array erzeugen.
    x = np.array([np.fromstring(line[3:], sep=" ") for line in s])
#==============================================================================
    
    
    
    fig = plt.figure(num=None, figsize=(12, 10), dpi=80, facecolor='w', edgecolor='k')
    
   
    pltc =  fig.add_subplot(1,1,1)
    
    plt.gca().invert_yaxis()
    tc = plt.plot(x[:,3],x[:,4], "bo-", label='TC')
    plt.grid(True)       
    plt.ylabel(r'[$mm$]',fontsize=20) 
    plt.xlabel(r'[$ W/m/K$]',fontsize=20)
    pltc.xaxis.label.set_color('blue')
    

    pltd = pltc.twiny()
    td  = plt.plot(x[:,6],x[:,4], "ro-",label='TD')
    plt.grid(True)       
        
    plt.xlabel(r'[$m^2/s\cdot 10^{-6}$]',fontsize=20)
    pltd.xaxis.label.set_color('red')
    
    for label in pltc.get_xticklabels():
        label.set_color('b')
        label.set_fontsize('18')
    for label in pltd.get_xticklabels():
        label.set_color('r')
        label.set_fontsize('18')
    for label in pltc.get_yticklabels():
        label.set_fontsize('18')
    
    plt.legend([tc[0], td[0]], ['TC', 'TD'])
    #plt.show()
    
    
    fig.savefig(os.path.splitext(files[j])[0] + '.pdf',
             dpi=300, facecolor='w',
             edgecolor='w', orientation='portrait',
             papertype='letter')    
    
#==============================================================================   

Ich lade alle txt-Datein die mehere Spalten haben ein suche nach "p9" lass mir die zeilen angeben und plotte dann x(:,6) und x(:.3) über x(:,4).
Nun zu meinen Problem. Ich habe jetzt eine weitere txt (Anfang_Messungen) in denen die Anfangspunkte der Messungen steht in etwa so:
Probe_3 50
Probe_4 78
Probe_5 90
Probe_6 66
Probe_7 77
Probe_8 88
Probe_9 89
Probe_10 67
Probe_Tomo 56 u.s.w
Diese txt hat die gleiche länge wie die Eingeladenen files also j.
Ich hätte gern das für j=0 bei x in der vierten Spalte überall (len(x)) 50 dazu addiert wird und für j=1 soll 78 dazu addiert werden u.s.w.
Ich arbeite erst seit kurzen mit matlab und bekomm das nichtzusammen. :K Über hilfe würde ich mich freuen.

Re: Bearbeiten und darstellen von txt-files

Verfasst: Donnerstag 2. Oktober 2014, 15:12
von /me
Ich bin leider gleich AFK, aber zumindest elementare Auffälligkeiten deines Codes muss ich noch gerade kommentieren.
Lienz20013 hat geschrieben:

Code: Alles auswählen

[...]
begin_file = open('Neuer_Ordner\Anfang_Messungen.txt','r')
for line in begin_file:
    begin_wert = line.split()
[...]
Der Code ist schon mal für gar nichts gut und du vergisst zudem, die Datei wieder zu schließen. Verwende das with-Statement, dann wird die Datei am Ende des Blocks automatisch geschlossen.

Code: Alles auswählen

with open('Neuer_Ordner\Anfang_Messungen.txt','r') as begin_file:
    for line in begin_file:
        # do something
Lienz20013 hat geschrieben:

Code: Alles auswählen

[...]
for j in range(len(files)):    
    datei = files[j]
    [...]
Was du hier so schön umständlich formulierst geht viel eleganter, wenn du direkt über files iterierst.

Code: Alles auswählen

for datei in files:
    [...]
Deine Verwendung von range ist in Python ein absolutes Antipattern.

Re: Bearbeiten und darstellen von txt-files

Verfasst: Donnerstag 2. Oktober 2014, 15:52
von Lienz20013
Danke schön. Aber hat jemand noch ne hilfe für das eigentliche Problem?

Re: Bearbeiten und darstellen von txt-files

Verfasst: Donnerstag 2. Oktober 2014, 16:48
von BlackJack
@Lienz20013: Mit der `zip()`-Funktion (bzw. `itertools.izip()` in Python 2) kann man über Tupel aus jeweils zusammengehörigen Elementen aus iterierbaren Objekten iterieren.