String aus Textdatei lesen und anschliessend manipulieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
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).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

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!
nerdizzle
User
Beiträge: 3
Registriert: Dienstag 29. November 2011, 13:00

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!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten