Seite 1 von 3

Verfasst: Freitag 8. Februar 2008, 21:30
von Schnäik
Wow, was seid Ihr denn hier für ein geiler Haufen?! Vielen Dank für die vielen schnellen Antworten!

Scheint als wäre der Ansatz gar nicht so verkehrt gewesen - mir kam nur das ständige File auf/ File zu etwas seltsam vor:

Code: Alles auswählen

datei  = 'test.txt'
file = open(datei, 'a+')
file.write('3 bla\n')
file.write('7 blubb\n')
file.close()

file = open(datei, 'r')
lines = file.readlines()
file.close()

file = open(datei, 'w')
file.writelines(sorted(lines))
file.close()
Gnushi hat geschrieben:Hi!
Falls das ein Realwelt-Problem ist, dann hilft die Shell weiter:
Danke - das Realwelt-Problem ist schon gelöst (Shell/Perl) aber ich dachte das wäre mal ein guter Einstieg in Python. Ist auch nur ein kleiner Teil des Ganzen...
noise hat geschrieben:

Code: Alles auswählen

f = open("test.txt", "r")
result = sorted(list(f) + ["2 text...", "7 text..."])
f.close()
`result` enthält dann das von dir gewünschte Ergebnis.
Das ist auch gut - bei mir läufts andersum. Die weiteren Ansätze hinsichtlich der Sortierung sind für mein aktuelles Problem oversized - die Zahlen zu Beginn einer Zeile haben in weiser Voraussicht alle die gleiche Länge bekommen - also mit führenden Nullen ;-) Der Rest danach würde nur bei gleicher Zahl relevant werden und spielt dann keine Rolle. Aber es ist nur eine Frage der Zeit bis was anderes kommt und deshalb habe ich mir die High-End Lösung auch mal gesichert :shock:
gerold hat geschrieben: Und was das gleichzeitige Lesen und Bearbeiten einer Textdatei betrifft -- mache es erst dann, wenn du genau weißt was du tust. Es ist nämlich so, dass du nicht einfach in der Mitte einer Datei etwas hinzufügen kannst. Du kannst etwas austauschen, aber nur so lange du damit die Größe der Datei nicht änderst.
Das ist mir im Grunde klar, das viele hin und her kam mir aber trotzdem seltsam vor. Hat das Schreiben via FOR Schleife Vorteile gegenüber file.writelines?

Als blutiger Anfänger habe ich hier und da noch das Gefühl dass ich mit Perl schneller ans Ziel komme. Aber bei der Rückendeckung hier beisse ich mich noch mal eine Weile durch. Seid selbst schuld, jetzt bin bestimmt bald mit der nächsten Frage wieder hier ;-)

Verfasst: Freitag 8. Februar 2008, 21:53
von gerold
Hallo Schnäik!
Schnäik hat geschrieben:

Code: Alles auswählen

file = open(datei, 'a+')
1.) Das "+" brauchst du nicht. Siehe: http://docs.python.org/lib/built-in-funcs.html#l2h-54
2.) ``file`` ist ein eingebauter Typ den du hier überschreibst
Schnäik hat geschrieben:Hat das Schreiben via FOR Schleife Vorteile gegenüber file.writelines?
Es hat dann Vorteile, wenn man mit jeder einzelnen Zeile etwas tun möchte. Das gilt für ``readlines()`` und für ``writelines()``. Aber in deinem Fall hat es keinen Vorteil.

Der große Vorteil der FOR Schleife kommt dann zum Tragen, wenn man sie mit ``read()`` vergleicht. ``read()`` liest die ganze Datei in den Speicher. Wenn man mit einer FOR Schleife über die Datei iteriert, dann wird die Datei zeilenweise in den Speicher geladen. Dieser wird etwas später wieder frei gegeben.

mfg
Gerold
:-)

Verfasst: Freitag 8. Februar 2008, 22:07
von Schnäik
gerold hat geschrieben:Hallo Schnäik!
Schnäik hat geschrieben:

Code: Alles auswählen

file = open(datei, 'a+')
1.) Das "+" brauchst du nicht. Siehe: http://docs.python.org/lib/built-in-funcs.html#l2h-54
2.) ``file`` ist ein eingebauter Typ den du hier überschreibst
Ups... ;-)

Danke Gerold für die Tipps!

Verfasst: Samstag 9. Februar 2008, 00:09
von noise
EyDu hat geschrieben:Nicht zu vergessen die aktuelle Mondphase, Stau auf der A7 und danach ob sein Hund gerade schläft ;-)
Du hast mit dem Thema sortieren angefangen. Und wenn dann richtig, weil sonst ist es genauso wenig Wert wie meine ursprüngliche Lösung ;) Tja, besonders konsistent scheinst ja nicht zu sein.

Ein schönes *PLONK* und du hast dir den falschen Neuling hier im Forum ausgesucht für deine Spielchen ;)
Gnushi hat geschrieben:Er verwendet weniger Zeilen und ich sortiere ebenfalls nur nach der Nummer,
Okay, das hatte ich übersehen.
Schnäik hat geschrieben:Wow, was seid Ihr denn hier für ein geiler Haufen?!
:D
Schnäik hat geschrieben:Die weiteren Ansätze hinsichtlich der Sortierung sind für mein aktuelles Problem oversized - die Zahlen zu Beginn einer Zeile haben in weiser Voraussicht alle die gleiche Länge bekommen - also mit führenden Nullen ;-)
Das dürfte sicherlich EyDu interessieren :D
Schnäik hat geschrieben:Seid selbst schuld, jetzt bin bestimmt bald mit der nächsten Frage wieder hier ;-)
Über Fragen freuen wir uns :) Und ich sie zu beantworten, und EyDu meine Antworten auf unsachliche weise zu Kommentieren ;)

Verfasst: Samstag 9. Februar 2008, 09:13
von BlackJack
Zu den ganzen "Vergleichern" mit dem `cmp`-Argument von `list.sort()`: Das `key`-Argument ist in der Regel vorzuziehen, weil die übergebene Funktion nur einmal pro Element aufgerufen wird, während die `cmp`-Funktion für jeden Vergleich beim Sortieren aufgerufen wird.

@noise: Die Worte "ASCII" und "Hexadezimalcode" wären nicht nötig gewesen. Es wird nach den Werten der Bytes im Bytestring verglichen, reicht als Erklärung. In welchen Zahlsystemen man die Werte darstellen kann ist egal. Ausserdem könnte Deine Erklärung mit ASCII die Frage aufwerfen, was die Vergleichsoperationen wohl mit den Werten 128 bis 255 machen. :P

@Gnushi: In Deiner `vergleich()`-Funktion kannst Du das ``if``/``elif``/``else``-Gedöns durch ``return cmp(av, bv)`` ersetzen.

Verfasst: Montag 11. Februar 2008, 01:29
von noise
Ne BlackJack, nicht 7 bit sondern 8 bit. :P

Verfasst: Montag 11. Februar 2008, 09:27
von BlackJack
Bitte wie meinen?

Verfasst: Montag 11. Februar 2008, 09:50
von noise
Das bezog sich darauf:
BlackJack hat geschrieben:Ausserdem könnte Deine Erklärung mit ASCII die Frage aufwerfen, was die Vergleichsoperationen wohl mit den Werten 128 bis 255 machen. :P

Verfasst: Montag 11. Februar 2008, 09:52
von BlackJack
Hab's immer noch nicht verstanden. :(

Verfasst: Montag 11. Februar 2008, 10:12
von noise
BlackJack hat geschrieben:Hab's immer noch nicht verstanden. :(
Oh, okay.
Die Anspielung mit "128 bis 255" bezieht sich doch darauf dass das originale ASCII (US-ASCII) ursprünglich eine 7-Bit-Zeichenkodierung war. Also 128 Zeichen. Der Rest mit "128 bis 255" war dann ne "Erweiterung" drum in 8 bit (http://de.wikipedia.org/wiki/ASCII#Kodierung). -- Das war doch deine Intention? Oder was meintest du mit deinem Satz?

Naja, daher halt meine aussage 7-Bit und nicht 8-Bit, was andeuten soll das ich mich nicht auf US-ASCII bezogen habe :P

BTW: Ich weiß das die Erweiterungen Länderspezifisch sind.

Verfasst: Montag 11. Februar 2008, 10:53
von BlackJack
Wo ist denn der Unterschied zwischen US-ASCII und ASCII? Schliesst ASCII noch Erweiterungen von Kanada oder südamerikanischen Ländern ein!? ;-)

Verfasst: Montag 11. Februar 2008, 12:28
von noise
hehe ^^

ASCII, US-ASCII - Die Unterscheidung gibt es nicht. Ney, sauberer Formuliert gibt es nur ASCII und ASCII mit der Erweiterung die Länderspezifisch sind. Und ganze genau...okay das führt nun zu weit ;)

Magst du mir dennoch mal sagen worauf du mit deinem Satz hinauswolltest?

Verfasst: Montag 11. Februar 2008, 13:14
von BlackJack
Das Du in Deinem zweiten Beitrag hier unnötigerweise "hexadezimal" und unkorrekterweise "ASCII" zur Erklärung der Sortierung von Bytestrings verwendet hast und zu EyDu meintest man könne das ohne die Begriffe nicht erklären ohne es in eine Roman ausarten zu lassen.

In dem selben Beitrag schreibst Du, das wären Grundbegriffe die man kennen sollte. Lern' doch erst einmal die Basics bevor Du Beiträge so pedantisch Satz für Satz auseinander pflückst und den Korinthenkacker heraus hängen lässt. ;-)

Verfasst: Montag 11. Februar 2008, 13:49
von noise
BlackJack hat geschrieben:Das Du in Deinem zweiten Beitrag hier unnötigerweise "hexadezimal" und unkorrekterweise "ASCII" zur Erklärung der Sortierung von Bytestrings verwendet hast und zu EyDu meintest man könne das ohne die Begriffe nicht erklären ohne es in eine Roman ausarten zu lassen.
Aha, das wolltest du damit
BlackJack hat geschrieben:Ausserdem könnte Deine Erklärung mit ASCII die Frage aufwerfen, was die Vergleichsoperationen wohl mit den Werten 128 bis 255 machen. :P
sagen? Und jetzt fängst du auch an mir vorzuschreiben wie ich meine Sätze zu strukturieren habe und was ich für Begriffe in den Mund nehmen darf!? Das ist doch nicht dein ernst!!
http://www.python-forum.de/post-89709.html#89709


Okay dann mal eine Grundkurs nur für dich. Was soll mit den Werten 128 bis 255 bei einem Bytestring sein!? Nichts.

Code: Alles auswählen

>>> chr(47)
'/'
>>> chr(128)
'\x80'
>>> chr(255)
'\xff'
>>> chr(256)

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    chr(256)
ValueError: chr() arg not in range(256)
>>> # ahhh, wer hätte das gedacht! :roll:
>>> "spam" < "eggs"
False
>>> sorted(["spam", "eggs"])
['eggs', 'spam']
>>> l = None
>>> for i in xrange(128, 256):
	    if l is not None:
                assert chr(l) < chr(i)
	l = i

	
>>> # alles klar?
BlackJack hat geschrieben: In dem selben Beitrag schreibst Du, das wären Grundbegriffe die man kennen sollte.
Genau.
BlackJack hat geschrieben: Lern' doch erst einmal die Basics bevor Du Beiträge so pedantisch Satz für Satz auseinander pflückst und den Korinthenkacker heraus hängen lässt. ;-)
Aha, da kneift es also? Du magst nicht das man dein Geschreibsel interpretiert? Hättest nicht gedacht das ich wusste worauf du mit deiner Frage hinauswolltest? Davon abgesehen bist du es doch der hier den lieben langen Tag Sätze und fremden Code pedantisch auseinander pflückt, zerreist und andere mit deinem Sarkasmus vor die wand fährt.

Und welches recht hast du mich einen Korinthenkacker zu nennen? Gehe ich so mit dir um? Sowas asoziales wie dich habe ich ja selten erlebt. :x

---

Wie ich eben schon zu Gerold geschrieben habe, habt ihr von euren 4081 Usern jetzt den 3501 User der euer ach so soziales Forum nicht mehr besucht.

Verfasst: Montag 11. Februar 2008, 14:13
von Rebecca
noise hat geschrieben:
BlackJack hat geschrieben: Lern' doch erst einmal die Basics bevor Du Beiträge so pedantisch Satz für Satz auseinander pflückst und den Korinthenkacker heraus hängen lässt. ;-)
Aha, da kneift es also? Du magst nicht das man dein Geschreibsel interpretiert? Hättest nicht gedacht das ich wusste worauf du mit deiner Frage hinauswolltest? Davon abgesehen bist du es doch der hier den lieben langen Tag Sätze und fremden Code pedantisch auseinander pflückt, zerreist und andere mit deinem Sarkasmus vor die wand fährt.

Und welches recht hast du mich einen Korinthenkacker zu nennen? Gehe ich so mit dir um? Sowas asoziales wie dich habe ich ja selten erlebt. :x
Weisst du, wofuer dieser hier gut ist: :wink: ?

Im uebrigen ist BlackJack zwar pedantisch, aber was er erzaehlt, ist (fast) immer sachlich korrekt und konstruktiv. Was hat das mit Zerreissen zu tun?

Verfasst: Montag 11. Februar 2008, 14:15
von EyDu
noise hat geschrieben:Wie ich eben schon zu Gerold geschrieben habe, habt ihr von euren 4081 Usern jetzt den 3501 User der euer ach so soziales Forum nicht mehr besucht.
Das hast du ja mal wieder ganz toll gemacht BlackJack: du nimmst mir damit meine letzte Daseinsbereichtigung. :wink: :x :D

Verfasst: Montag 11. Februar 2008, 14:30
von noise
Rebecca hat geschrieben:Im uebrigen ist BlackJack zwar pedantisch, aber was er erzaehlt, ist (fast) immer sachlich korrekt und konstruktiv. Was hat das mit Zerreissen zu tun?
Hallo Rebecca, ich würde (abgesehen von dem letzen Post an BlackJack und die par Albernheiten die ja jedem gestatte sein sollten) gerne wissen wo ich Unsachlich und Destruktiv war? Vielleicht würde es mir helfen zu verstehen weshalb einige meine auf mir herumtreteten zu müssen, obwohl ich erst ein par tage hier bin?

Um es klar zu stellen. Ich habe hier in meiner Kurzen Zeit keinen
- Verbal fertig gemacht,
- vor der Comunity schlecht darstellen lassen,
- Fremden Code dermaßen zerrissen (sondern lediglich wenn dan Tipps gegeben)
- Verarscht und verspottet.

Ich habe immer Versucht Sachlich zu bleiben und lediglich meinen Standpunkt dargestellt, weil jeder eben andere Ansichten hat.

Wenn Ihr das anders sieht, dann Postet doch bitte die stellen und erklärt es einen Dummen wie mir :?

noise

P.S. Auserdem wo reite ich ständig auf was rum (ausser dem hier nun)? "Ihr" (Also EyDu und BlackJack) habt doch darauf rumgeritten was für Begriffe ich zu verwenden habe und wie ich meine Sätze zu Strukturieren habe :? Ich meine, herrscht hier wirklich eine Dualität gegenüber Neulingen? Das kann es doch nicht sein...

Verfasst: Montag 11. Februar 2008, 14:45
von EyDu
Drehen wir die Sache mal um: vielleicht schaffst du es ja auch nicht, dich in eine bestehende Struktur einzugliedern.

Inklusive meines letzten Posts komme ich in diesem Thread gerade mal auf ein halbes dutzend Sätze und BlackJack hat ebenfalls nur unwesentlich mehr. Wie soll man denn da bitte von "zerpflücken" von Beiträgen sprechen?

Jetzt schaust du dir am besten mal deine Beiträge an und überprüfst wie viele Zitate du aufführst und auf wie viele Einzelheiten du bei anderen Posts eingehst.

Verfasst: Montag 11. Februar 2008, 14:53
von noise
Hallo, EyDu.
EyDu hat geschrieben:Drehen wir die Sache mal um: vielleicht schaffst du es ja auch nicht, dich in eine bestehende Struktur einzugliedern.
Das kann natürlich sein. Aber das ist natürlich nicht das einzige Forum in dem ich angemeldet bin und in anderen habe ich nicht solche Probleme und sowas zu spüren bekommen. Die meisten von den Foren sind auch nicht viel größer als dies hier und ungefähr genauso häufig von Mitgliedern besucht, so da sich nicht unbedingt denke das es auf die Größ zurückzuführen ist.
EyDu hat geschrieben:Inklusive meines letzten Posts komme ich in diesem Thread gerade mal auf ein halbes dutzend Sätze und BlackJack hat ebenfalls nur unwesentlich mehr. Wie soll man denn da bitte von "zerpflücken" von Beiträgen sprechen?

Jetzt schaust du dir am besten mal deine Beiträge an und überprüfst wie viele Zitate du aufführst und auf wie viele Einzelheiten du bei anderen Posts eingehst.
Ist das wirklich das Problem?

Was ich nicht so ganz nachvollziehen kann ist weshalb es (anscheinend) als störend empfunden wird auf viele Einzelheiten einzugehen? Ich dachte (und habe diverse male unaufgefordert bestätigt bekomme) das gerade diese Gründlichkeit von mir eine Positive stärke darstellt. Mag sein das ich in euren Augen dabei zu ausschweifend bin, aber ist den das so schlimm? Was ist den mit der Individualität?

Auch bin ich es gewohnt, immer unter Zitaten zu antworten, wegen der Übersichtlichkeit und damit der Kontext erhalten bleibt.

EDIT: Rechtschreibung.

Verfasst: Montag 11. Februar 2008, 14:54
von Leonidas
Man, Leute, ich wollte mich eigentlich nicht einmischen, aber schaltet doch mal einen Gang zurück...

Das ist doch alles in allem lächerlich sich wegen so einem Kram aufzuregen. Ich glaube die anderen denken da ganz ähnlich und haben ähnlich wie ich schon die Hand beim Popcorn.

Die Welt wird schon nicht untergehen, wenn man ASCII falsch definiert oder wenn man Dinge unnötig kompliziert erklärt. 8)