Seite 2 von 2

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 10:37
von deets
Auch nicht unerwaehnt bleiben sollte PyPy, welches inzwischen im Schnitt doppelt so schnell ist als der CPython Interpreter - und dabei unter anderem alternative Garbage Collection einsetzt, womit implizites Verhalten wie bisher nicht garantiert ist. Und das ist schon deutlich relevanter, denn PyPy kann durchaus oft als drop-in replacement genutzt werden (im Gegensatz zu Jython).

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 13:17
von Hyperion
EyDu hat geschrieben: Nein, darauf, dass das open nicht in den try-Block gehört.
Äh... dann zeig Du mir bitte die Lösung. Ich kann mir das so nicht vorstellen!

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 13:43
von EyDu
Ich hatte doch oben bereits PEP 343 verlinkt:

Code: Alles auswählen

        with EXPR as VAR:
            BLOCK
wird zu

Code: Alles auswählen

        mgr = (EXPR)
        exit = type(mgr).__exit__  # Not calling it yet
        value = type(mgr).__enter__(mgr)
        exc = True
        try:
            try:
                VAR = value  # Only if "as VAR" is present
                BLOCK
            except:
                # The exceptional case is handled here
                exc = False
                if not exit(mgr, *sys.exc_info()):
                    raise
                # The exception is swallowed if exit() returns true
        finally:
            # The normal and non-local-goto cases are handled here
            if exc:
                exit(mgr, None, None, None)
Das "open" wird, vor dem "try" ausgeführt. Sonst würde man bei einem fehlerhaften Öffnen versuchen die Datei zu schließen.

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 13:46
von frabron
EyDu meint wohl, dass foo in deinem Beispiel (finally) nicht geschlossen werden kann, wenn eine Exception passiert. Soweit ich mich richtig erinnere musste man die try ... excepts ... verschachteln

Code: Alles auswählen

try:
    foo = open('bar')
    try:
        foo.read()
    finally:
        foo.close()
except IOError:
    # ...
Edit: knapp zu spät

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 13:54
von Hyperion
Ah ... ok. Dann hab ich das wohl immer falsch gehandelt - nuja, benutze ja auch schon seit Jahren `with` :-D

Diese Antwort hatte mich jedoch eher verwirrt, als dass sie half:
EyDu hat geschrieben: Nein, darauf, dass das open nicht in den try-Block gehört.

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Donnerstag 1. Dezember 2011, 14:51
von jerch
Jaja, das waren schlimme Zeiten, als es nur try/except bzw. try/finally gab. :shock:
Das Gefummel mit verschachtelten Exceptionhandlern war nicht schön.

Praise the invention of try/except/finally and with!

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Samstag 10. Dezember 2011, 20:20
von nerdizzle
Hallo zusammen!

Ich bin überwältigt wie viel dazu geschrieben wurde, danke vielmals! Ich muss sagen, dass ich exeption handling
in Python noch nicht genau angeschaut habe, kenne es aber aus Java.

Ich habe das ganze nun so gelöst:

Code: Alles auswählen

from pylab import *

xList = []
yList = []

f = open("FunDia1.txt")

xlabel('Verkehrsdichte')
ylabel('Verkehrsfluss')



for line in f:
	line = line.rstrip()
	parts = line.split()
	xList.append(double(parts[0]))
	yList.append(double(parts[1]))
	
plot(xList,yList,'ro')
axis([0,1.2,0,0.5])
show()
Funktioniert wunderbar. Ich möchte die Daten gerne noch mit der Methode der kleinsten Quadrate fitten.
Gibt es eine Funktion, die das für einen macht?

EDIT: http://www.scipy.org/Cookbook/FittingData
diesen Link habe ich mir angeschaut, aber blicke nicht wirklich durch, darum kann ich es auch nicht implementieren ..
cheers!

Re: String aus Textdatei lesen und anschliessend manipuliere

Verfasst: Sonntag 11. Dezember 2011, 12:48
von Hyperion
1.) Wenn schon mit einem eigenen Ansatz, wieso verwendest Du nicht ``with``? Das wurde ja gerade intensiv diskutiert...

2.) Wieso verzichtest Du auf die Funktion aus ``numpy``, die ich Dir gepostet hatte? Das wäre doch das komfortabelste...