print ohne carriage return

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.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

print ohne carriage return

Beitragvon lunas » Freitag 2. November 2007, 00:49

Und noch eine Frage:

Ich habe ein etwas größeres Programm geschrieben, das u.a. mehrere Threads benutzt und aus diesen via print auf die Konsole schreibt. Unter Windows funktioniert das auch ganz gut, aber unter Linux gibt es ein Problem mit der Darstellung. Wenn etwas mit print geschrieben wird, dann beginnt der Text der nächsten print-Ausgabe am Ende der vorherigen Ausgabe, also etwa so:

Code: Alles auswählen

irgendein text
              noch ein text
                           und so weiter


Wenn allerdings raw_input aufgerufen wird und der Parameter zur Ausgabe von Text benutzt wird, dann ist die Darstellung (zumindestens für die Parameter) okay.
Leider konnte ich das Problem nicht isolieren oder mit einem anderen Programm reproduzieren, sonst würde ich einen Codeschnipsel reinstellen.

Vielleicht hat ja irgend jemand schon mal von solch einem Problem gehört...
BlackJack

Beitragvon BlackJack » Freitag 2. November 2007, 01:23

Sehr eigenartig, weil ich das Problem eher unter Windows erwartet hätte, weil dort wirklich zwei Zeichen für das Zeilenende verwendet werden, eines um eine Zeile weiter zu gehen und eines um den Cursor wieder an den Zeilenanfang zu setzen.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Beitragvon lunas » Freitag 2. November 2007, 03:05

Jap, das dachte ich auch...

Kann es vielleicht irgendwie mit dem encoding zusammenhängen? Ich habe es weder im Skript angegeben, noch die shebang Zeile eingefügt. Das Skript rufe ich immer über "python myscript.py" auf.
BlackJack

Beitragvon BlackJack » Freitag 2. November 2007, 13:05

Das Du das Problem nicht isolieren kannst ist irgendwie ungünstig. Vielleicht gibt Dein Programm irgendwo "Müll" aus der zufällig "sinnvolle" Anweisungen für das Terminal enthält. Mit den entsprechenden Escapesequenzen kann man ja alles mögliche einstellen.

Leite doch die Ausgabe mal in eine Datei um und schau Dir die Bytes mit einem Hexeditor an, ob da irgendwas dabei ist, was komisch aussieht.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Beitragvon lunas » Montag 5. November 2007, 10:22

Gute Idee mit dem Umleiten in eine Datei. Leider hilft es mir aber trotzdem nicht... In der Textdatei sieht es absolut sauber aus. Jede Zeile bricht korrekt um und beginnt am Zeilenanfang. Auch im Hex-Editor sieht alles super aus (0x0A als Zeilenende).

Ich habe echt keine Idee woran das liegen kann. Vielleicht liegt es an der shell? Ich habe die shell genommen, die beim Start von xterm gestartet wird (keine Ahnung, ob das eine eigene shell ist oder was da startet).

Hat noch jemand eine Idee?
BlackJack

Beitragvon BlackJack » Montag 5. November 2007, 11:11

Wenn Du die umgeleitete Datei in so einem Terminal wieder ausgibst, sind die Zeilenenden in Ordnung?

Kann es sein, dass das Programm irgend etwas mit dem Terminal anstellt? `curses` oder so benutzt? IronPython statt CPython?
windner
User
Beiträge: 76
Registriert: Freitag 19. Oktober 2007, 11:25

Beitragvon windner » Donnerstag 8. November 2007, 18:51

Liegts an der shell?

Code: Alles auswählen

csh -c "python myscript.py"
sh -c "python myscript.py"
bash -c "python myscript.py"
usw.


Liegts am xterm?
Probier es auf den Text-Terminals oder nimm das gnome-terminal oder sowas.

Wenn nicht, kann es nach meinem Verständnis nur an deinem Programm liegen. Was du mit dem Terminal unter Umständen anstellst, kannst du hier nachlesen, ich denke, es wird ein VT100-kompatibles sein:
http://www.neoware.com/docs/teemtalk/t2k17pro.pdf

Manche Terminals haben Seqenzen für "disable auto cr", das wäre ein plausibler Grund. In dem Fall könntest du ganz einfach die "enable auto cr" sequenz vorschicken.

Wer ist online?

Mitglieder in diesem Forum: dark_universe