Hallo zusammen,
ich möchte eine Liste von Strings an eine Funktion übergeben, die aber
ein File-Objekt erwartet. Gibt es eine Möglichkeit, die Liste
umzuwandeln? Bisher behelfe ich mir dadurch, dass ich die Liste in eine
temporäre Datei schreibe und daraus anschließend wieder lese. Das
scheint mir nicht sehr elegant.
Gruss,
Andreas
--
Andreas Grytz | http://www.linuxnewmedia.de
Stefan-George-Ring 24 | Tel: +49 (0) 89 993411-0
D-81929 München | Fax: +49 (0) 89 993411-99
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Also, wenn ich was an dem Unicode-Handling ändern möchte, muß ich mir
erstmal klar werden, was mich stört. Meine verspätete
Weihnachtsmannwunschliste:
1) "DeprecationWarning: Non-ASCII character" werde ersatzlos gestrichen und
der Tag selbiger Tat werde in den Rang eines Nationalfeiertages erhoben.
2) print u"hübsch"
sollte keinen UnicodeEncodeError liefern, sondern den String per Latin-1
kodieren.
3) print u"hübsch" + "hübsch"
sollte keine UnicodeDecodeError liefern (wer weiss auf Anhieb, warum es hier
einen DecodeError gibt und nicht einen EncodeError?) sondern
a) "hübsch" per Latin-1 dekodieren
b) das Ergebnis per Latin-1 kodieren.
4) s = unicode("hübsch")
sollte keinen DecodeError liefern, sondern auf unicode("hübsch","latin-1")
hinauslaufen, zumal für mein laienhaftes Unverständnis u"hübsch" die
nicht-ausführliche-Version von unicode("hübsch") ist und u"hübsch" *keine*
Exception wirft.
5) print "hübsch".decode("latin-1")
sollte keinen UnicodeEncodeError liefern (wer weiss auf Anhieb, warum
"decode" einen "encode"-Fehler liefert? Hint: decode liefert den Fehler
nicht, print tut es) sondern den String per Latin-1 kodieren.
Die Punkte 2-5 lassen sich umsetzen, indem man in site.py das
defaultencoding auf "latin-1" setzt. Duh! Punkt 1 ist aus meiner Sicht eine
minimale Codeänderung, nämlich die im C-Code fest eingebraute
DeprecationWarning rauskommentieren.
Hab ich was vergessen?
Frage: Was sind eigentlich die gravierenden Nachteile eines geänderten
defaultencodings?
Nachschlag: Kann ich in einem Script, das ich ausliefern möchte, das
defaultencoding auf einfach weise auf latin-1 ändern? weil, die funktion
wird ja in site.py aus dem namespace gelöscht.
Ciao,
Gerson
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Hi!
Ich habe festgestellt das bei Python die Unix-Zeit bei etwa +2 100 000 000
Sekunden aufhört. Ist das "Konvention" oder nur eine Python-Beschränkung?
Weil wen bei Unix nach +2 100 000 000 Sekunden "alles zu Ende ist", würde
bei meiner PostgreSQL-DB in Integer-Typ reichen (+2 Mrd.)
MfG
Olaf
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Hallo,
hier zu meinem Code, mein Setup.py sieht folgendermaßen aus:
from distutils.core import setup
import py2exe
setup(name="Sigmanet",
version="1.0",
scripts=["Sigmanet.py"],
py_modules=["Sigmanet",
"Sigmanet_wdr",
"Dialoge",
"SimDC",
"DatabaseDC",
"images",
"StatusBar"])
Im Prinzip funktioniert das ja auch nur wenn ich Setup ausführe kommt am
Ende eine List mit
"warning: py2exe **********************************
warning: py2exe: * the following modules were not found
warning: py2exe: * Corbon.Folder
usw (hier ist eine List von ca 20 Modulen, die er nicht findet)
ich habe versucht diese Module zu finden, aber die sind wohl irgendwo in
einer Bibliothek, so daß ich sie per Namen nicht finden kann und deshalb
auch nicht weiß, welche Datei ich noch einbinden muß.
Wo kann ich etwas mehr über XML:Pointer erfahren und wie ich sie erstelle
unter Python?
Simon
-----Ursprüngliche Nachricht-----
Von: martin(a)v.loewis.de [mailto:martin@v.loewis.de]
Gesendet: Donnerstag, 18. Dezember 2003 22:20
An: Simon Plum
Cc: python-de(a)python.net
Betreff: Re: [Python-de] XML-Python mal wieder
"Simon Plum" <simon.plum(a)gmx.de> writes:
> In meinem Programm benutze ich
> from xml.dom import minidom, Node
> from xml.dom.minidom import parse, parseString
> weiß einer zufällig welche Bibliotheken ich dann einbinden muß in meinem
> Setup.py und wie?
Nein, ich könnte aber vielleicht helfen, wenn Du sagst, welchen Fehler
Du genau bekommst.
Ciao,
Martin
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Liebe Listenmitglieder,
mit großem Interesse habe ich die Diskussion über mein neues Buch "Objektorientierte Programmierung mit Python" gelesen. Ich habe sie per Zufall im Archiv der Mailingliste (4. Quartal 2003) gefunden (http://starship.python.net/pipermail/python-de/2003q4/thread.html#4385).
Vielleicht interessien Sie einige Anmerkungen und Hintergrundinformationen des Autors.
Ich nehme die "Intialisierungsmail" des Diskussionsfadens von Klaus Meyer als Ausgangspunkt.
>>> Das Buch "Objektorientierte Programmierung mit Python" hat knapp 600
Seiten. Das Layout ist übersichtlich und klar, das Inhaltsverzeichnis
ausführlich. Der Index scheint mir etwas knapp zu sein. <<<
MW: Ich glaube auch, dass ein guter Index ein wichtiges Qualitätsmerkmal ist und werde ihn bei der Zweitauflage gründlich überarbeiten und -soweit es der Verlag mir erlaubt - erweitern. Mit über 900 Stichwörtern hat der Index von "OOP mit Python" aber durchaus einen Umfang, der bei Lehrbüchern dieser Art üblich ist.
>>> Etwa die Hälfte des Buches ist eine Einführung in Python (es wird schon V
2.3 verwendet), wobei der Autor einen Schwerpunkt "auf die Erarbeitung von
Konzepten der Objektorientierung" gelegt haben will.
In der zweiten Hälfte wird relativ ausführlich Tkinter behandelt, außerdem
einige andere Themen, zB CGI-Programmierung, Internet, Datenbanken,
Threads, Fehlerbehandlung usw...
Außer den unvermeidlichen Listings enthält das Buch auch einige erklärende
Grafiken, einfache UML-Diagramme und einige EBNF-Grammatiken zur Syntax
von Python. <<<
MW: Das Buch soll eine Einführung in die Objektorientierte Programmierung sein, also damit auch eine Einführung in die Programmierung als solche. Und damit müssen auch Konzepte wie Operatoren, Kontrollstrukturen etc. besprochen werden, die nichts "spezifisch objektorientiertes" in sich bergen. Die "richtige" objektorientierte Programmierung beginnt ja eigentlich erst dann, wenn man eigene Klassen definiert. Damit beginnen wir in der Mitte des Buches. Im ersten Teil werden nur vorgegebene Klassen verwendet. Ich habe Wert darauf gelegt, von Anfang an die Begrifflichkeit der Objektorientierten Programmierung möglichst sauber zu verwenden. So ist die Rede von "Objekten der Klasse File", der Begriff des "Datentyps" wird in Beziehung zum Begriff der "Klasse" gesetzt, wir gehen auf die Identität von Objekten ein, es werden Methoden von String- oder Dictionary-Objekten verwendet ..., um nur einige wenige Beispiele zu nennen. Insofern zieht sich die objektorientierte Denkweise wie ein roter Faden durch das ganze Buch - auch im ersten Teil.
>>> Der Autor pflegt einen sachlichen Still, die Beispiel, soweit ich sie mir
angesehen habe, wirken aber etwas "hölzern", so wie man sie aus manchen
Schulbüchern kennt. Jedes Kapitel hat am Schluß einen Aufgabenblock und
die Lösungen gibt es auch gleich dahinter. <<<
MW: Ich glaube, ich habe so eine ungefähre Ahnung, was mit "hölzern" gemeint ist, vielleicht: nüchtern, ohne Verzierungen ... Grundsätzlich: Ein Lehrbuch lebt von guten Beispielen. Ich habe versucht, die Beispiele thematisch so zu wählen, dass sie reale Anwendungsfelder der Informatik berühren. Auf der anderen Seite sollten die Listings möglichst kurz und übersichtlich bleiben, um eine optimale Lesbarkeit zu gewährleisten. Bei der Entwicklung der Beispiel war es manchmal so, dass der erste Entwurf vielleicht fünf Seiten Programmtext umfasste, dann immer weiter gekürzt und auf das Wesentliche reduziert wurde, bis dann am Ende nur noch eine Seite übrig blieb. Beim Leser sollte die Idee entstehen, dass man das Beispielprogramm zu etwas wirklich Brauchbaren weiterentwickeln könnte.
>>> Auf Grund des Titels hätte ich ein Buch erwartet, welches schon von
Python-Grundkentnissen beim Käufer ausgeht und nun die ganzen
Besonderheiten der "Objektorientierung" vertieft. Der Autor mag die
"Objektorientierung" mehr im Fokus haben, als das in anderen Büchern der
Fall ist, aber im Grunde scheint es mir im wesentlichen eine allgemeine
Einführung in Python (+ einiger Python-Libs wie zB Tkinter) zu sein. <<<
MW: Viele Universitätscurricula gehen so vor. Zuerst ein Kurs über (imperative) Grundkonzepte der Programmierung, dann ein Fortgeschrittenenkurs über OOP. Wir haben versucht, sowohl (ambitionierte) Einsteiger als auch Fortgeschrittene anzusprechen. (So steht es übrigens auch auf dem Buchumschlag) Das bedeutet aber auch (wie schon gesagt), dass zunächst grundlegende Konzepte angesprochen werden, die für Fortgeschrittene vielleicht stellenweise langweilig sind. Allerdings habe ich auch schon von erfahrenen Programmierern gehört, dass sie auch im ersten Teil des Buches etwas dazu gelernt hätten :-)
>>> Obwohl schon Pyton V2.3 verwendet wird, werden neue Python Funktionen -
wie zB Generatoren - nicht behandelt.
MW: Das Buch sollte maximal 600 Seiten haben. Es mussten also Schwerpunkte gesetzt werden. Ein Zusatzkapitel ist noch auf der CD. Aber viele spezielle Themen fielen dem "Rotstift" zum Opfer, darunter etwa die Anbindung von Python-Skripten an MySQL-Datenbanken und C-Programme, XML, Generatorfunktionen, Iteratoren etc. Um die Generatorfunktionen tut es mir schon deswegen Leid, weil ich jahrelang an einem Lehrstuhl gearbeitet habe, bei dem das Rechnen mit unendlichen Objekten ein zentrales Forschungsgebiet war.
>>> Zum Schluß noch eine merkwürdige Sache (die wohl kein Zufall sein kann!):
In allen Programmen werden keine Umlaute verwendet und es gibt auch keine
tieferen Informationen zum Thema Unicode (trotz eines eigenen Kapitels
über Zeichenketten)! Überall werden die Umlaute konsequent umschrieben
(ae, ue usw.). Beim Buch ist auch eine CD dabei, auf der alle
Beispielsourcen enthalten sind. Ich habe die durchsucht, keine Umlaute!
Warum das so ist, weiß ich nicht, aber gerade über Unicode hätte ich mir
ein ausführliches Kapitel gewünscht. <<<
MW: Entscheidend für mich ist die Lesbarkeit von Programmbeispielen. Deshalb habe ich die Umlaute und ß meist umschrieben. Beachten Sie: Listings in einem Buch sind Texte, die gelesen werden.
Es bereitet einfach gr\xf6\xdfere M\xfche einen Text zu lesen, in dem Nicht-ASCII-Zeichen durch Escape-Sequenzen codiert sind.
Zum Thema Unicode: Ich hatte gedacht, mit einer Seite die Essentials ausreichend gut behandelt zu haben. Aber interessant zu erfahren, dass hier mehr Information gewünscht wird.
Soweit meine Anmerkungen.
Wenn Sie Fehler finden oder sonstige kritische Kommentare haben, können Sie mir auch gerne direkt schreiben.
Es wird in Kürze auf der Web-Site von mitp eine Errata-Seite zu diesem Buch angelegt.
Frohe Weihnachten und alles Gute im Neuen Jahr
Michael Weigend
michael.weigend(a)fernuni-hagen.de
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Guten Abend,
aus Langeweile habe ich mir die Aufgabe gestellt ein Programm zu schreiben das
einen binaeren Baum erzeugt. Da das alleine keine richtige Herausforderung
mehr ist, soll sich dieser Baum auch noch selber aufbauen, sprich neue Knoten
werden nicht von aussen eingefuegt sondern von der Klasse Node selber. Da das
ziemlich umstaendlich klingt hier der Code:
class Node:
def __init__(self,string, parent=None):
self.app=parent
self.string=string
self.lings=0
self.rechts=0
def einfuegen(self, string, adresse):
a=hash(string)
b=hash(self.string)
if a > b and self.lings:
self.lings.einfuegen(string)
elif a > b and not self.lings:
self.lings=Node(string, self)
elif a < b and self.rechts:
self.rechts.einfuegen(string)
elif a < b and not self.rechts:
self.rechts=Node(string, self)
else:
self.adressen[adresse]=None
def suchen(self, string):
a=hash(string)
b=hash(self.string)
if a > b and self.lings:
self.lings.suchen(string)
elif a < b and self.rechts:
self.rechts.suchen(string)
elif a == b:
self.ausgabe(self.string)
def ausgabe(self,a=None):
if not self.app:
return a
else:
b=getattr(self.app,"ausgabe")
b(a)
Beschreibung:
Die Methode "einfuegen" erzeugt neue Knoten. Die Methode "suchen" durchsucht
den Baum nach dem zu suchenden String. Wenn eine Uebereinstimmung gefunden
wurde wird die Methode "ausgabe" aufgerufen, diese wiederum hangelt sich
durch den binaeren Baum bis es auf den Rootknoten stoeßst. Der soll dann den
gesuchten String ausgeben.
Aufruf:
text=["Bettdecke","Gilbert","Wassers","Gefaengnis","Gold","schwenkte","Bett","die","das","dem"]
node=Node("Rootknoten")
# Neue Knoten einfuegen
for item in text:
node.einfuegen(item)
# String suchen
node.suchen("Wassers")
print node.ausgabe()
Alles funktioniert, bis auf eins, die Methode ausgabe gibt None zurueck.
Ersetzt man aber return a durch print a funktioniert es. Kann mir einer sagen
woran das liegt und ob man dieses Problem loesen kann?
Frohe Weihnachten
Albert
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Am Freitag 26 Dezember 2003 21:29 schrieb Olaf 'Ruebezahl' Radicke:
> Hi!
> Langsam kriege ich eine Krise!
> Wenn mein Code nicht schon so Komplex währe (ca. > 6000 Zeilen), würde
> ich ein paar Code schnipsel schicken.
> Was ich schon an Zeit verplempert habe, Unicode-Fehler zu finden!!!
> Das ist bei Python wie Blindflug. Man weis erst was man vor sich
> hat( ASCII/uni-Code), wenn es Ärger gibt. In meinen Prog wir ziemlich
> heftig zwischen LaTeX, SQL und XML hin und her geparst. Ich muss
> immer mit Sonderzeichen rechnen aber ich weis nie - wirklich - ob
> die Codierung gerade eindeutig ist oder nicht. Das Leben mit Python
> währe um einiges einfacher, wenn ein Unicode-String eine Klasse
> (bzw. Typ) währe. Ich bin gerade dazu gezwungen "Bananen-Software"
> (reift beim Kunden) zu hacken, weil ich garnicht soviel Test schreiben
> kann, um sich zu sein, das überall im Code schon mal ein Sonderzeichen
> durchgelaufen ist, wo mal eins durch laufen könnte.
>
> Sorry für die "Abkotz-Mail" aber ich musste mir mal Luft verschaffen...
>
> Hat sich von euch schon mal Mono/C# an gesehen? Finde ich
> sehr spannend.
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Am Freitag, 26. Dezember 2003 13:10 schrieben Sie:
> Am Donnerstag 25 Dezember 2003 22:20 schrieb Albert Hermeling:
Ich habe eine Mail von Olaf bekommen die ich hier beantworte.
Hallo Olaf,
> > aus Langeweile
>
> [...]
>
> > class Node:
> > def __init__(self,string, parent=None):
> > self.app=parent
> > self.string=string
> > self.lings=0
> > self.rechts=0
> >
> > def einfuegen(self, string, adresse):
>
> Warum übergibt man den Parameter " adresse" wenn
> er nicht gebraucht wird?
Ups, der Parameter solte eigentlich geloescht sein.
Einer meiner Ueberlegungen war den "Baum" als Container fuer Informationen zu
benutzen. Man kann dann ueber den passenden String darauf zugreifen. Um aber
das Beispiel nicht unnoetig zu komplizieren, habe ich mich gestern Abend dazu
entschlossen diesen Teil des Programmcodes zu loeschen.
mfg
Albert Hermeling
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Am Donnerstag, 25. Dezember 2003 23:46 schrieb Tomek Meka:
Hallo,
da Tomeks Mail nur an mich ging hier noch mal die Mail ungegkuertzt
> Hallo!
> Ich vermute, es liegt daran, dass in dem zweiten else-Zwei ein return
> fehlt. Also statt b(a) muss es return b(a) stehe.
>
> Gruesse,
> Tomek
Hallo Tomek,
habe deinen Vorschlag getestet leider ohne Erfolg. So ganz habe ich Deinen
Vorschlag auch nicht verstanden. Du meinst die Methode ausgabe? Im else Teil
wird die Methode ausgabe des Elternknotens aufgerufen. Warum da noch ein
return?
mfg
Albert
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de