Re: stdin Konflikt mit pdb

03/11/2008 - 23:23 von Volker Grabsch | Report spam
Florian Lindner <Florian.Lindner@xgm.de> schrieb:

ich habe ein Programm welches eine Angabe von stdin entgegennimmt
(i.d.R. pipe eine Datei)

python app.py < input

nun würde ich das gerne auch mal debuggen. (mit pdb). Nur leider nimmt
pdb ebenfalls seine Eingaben von stdin.



Was genau hindert dich daran, dem Programm einen Parameter für
den Dateinamen zu spendieren? Das ist im Allgemeinen sowieso
anzuraten.

Ergànze dein Script z.B. um folgende Zeilen:

try:
f = file(sys.argv[1])
except IndexError:
f = sys.stdin

und benutze im weiteren Verlauf "f" anstelle von "sys.stdin".
Dann kannst du es einfach via

python app.py input

aufrufen.


Weiß hier vielleicht jemand eine Lösung?



Mein Vorschlag ist vielleicht nicht das, was du hören wolltest,
aber er *ist* eine Lösung. :-)

(siehe auch: Kathinka's Law)


Gruß,

Volker

"Wenn du der Meinung bist, der andere sei ein Depp, dann überlass das
Antworten denjenigen, die nicht dieser Meinung sind."

 

Lesen sie die antworten

#1 Florian Lindner
09/11/2008 - 17:27 | Warnen spam
On 3 Nov., 23:23, Volker Grabsch
wrote:
Florian Lindner schrieb:

> ich habe ein Programm welches eine Angabe von stdin entgegennimmt
> (i.d.R. pipe eine Datei)

> python app.py < input

> nun würde ich das gerne auch mal debuggen. (mit pdb). Nur leider nimmt
> pdb ebenfalls seine Eingaben von stdin.

Was genau hindert dich daran, dem Programm einen Parameter für
den Dateinamen zu spendieren? Das ist im Allgemeinen sowieso
anzuraten.

Ergànze dein Script z.B. um folgende Zeilen:

    try:
        f = file(sys.argv[1])
    except IndexError:
        f = sys.stdin

und benutze im weiteren Verlauf "f" anstelle von "sys.stdin".
Dann kannst du es einfach via

    python app.py input

aufrufen.



Das Programm soll von maildrop (ein MDA wie procmail) aufgerufen
werden und eine E-Mail auf stdin serviert bekommen. Diese Mail
existiert nicht als Datei.

> Weiß hier vielleicht jemand eine Lösung?

Mein Vorschlag ist vielleicht nicht das, was du hören wolltest,
aber er *ist* eine Lösung. :-)



Fürs Debugging ist die Lösung eingeschrànkt tauglich, für die Betrieb
nicht.

Ähnliche fragen