Kommadozeilenargument mit "Leerzeichen"
Hallo, ich habe Schwierigkeiten bei der Übergabe eines Dateinamens mit Leerzeichen an ein Python-Skript. Bsp.: (Eingabe auf Win2000, cmd.exe) 1. python mein_skript.py "input_data.dat" --> sys.argv[1] = input_data.dat 2. python mein_skript.py "input data.dat" --> sys.argv[1] = input --> sys.argv[2] = data.dat Was mache ich falsch ? Gruß, Michael _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Am Fre, 2003-09-12 um 15.03 schrieb Michael Grabietz:
1. python mein_skript.py "input_data.dat" 2. python mein_skript.py "input data.dat" Was mache ich falsch ?
Ist das jetzt ein Aufmerksamkeitstest oder was? :-) Du hast bei 2. den '_" durch ein " " ersetzt ->ergo 2 Parameter statt 1. Andreas _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Andreas Kuntzagk wrote:
Am Fre, 2003-09-12 um 15.03 schrieb Michael Grabietz:
1. python mein_skript.py "input_data.dat" 2. python mein_skript.py "input data.dat" Was mache ich falsch ?
Ist das jetzt ein Aufmerksamkeitstest oder was? :-) Du hast bei 2. den '_" durch ein " " ersetzt ->ergo 2 Parameter statt 1.
Wenn's ein Aufmerksamkeitstest war, bist du durchgefallen :-P Wenn ein Dateiname Leerzeichen enthält, muss man ihn auf der Windows-Shell in Anführungszeichen setzen. Man erwartet dann natürlich auch, dass wenn man ihn so als Parameter an ein Python-Skript übergibt, er auch als eine Element bei sys.argv ankommt. Das ist schenibar nicht so :-/ -- Gerhard _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Gerhard Häring wrote:
Andreas Kuntzagk wrote:
Michael Grabietz wrote :
1. python mein_skript.py "input_data.dat" 2. python mein_skript.py "input data.dat" Was mache ich falsch ?
Ist das jetzt ein Aufmerksamkeitstest oder was? :-) Du hast bei 2. den '_" durch ein " " ersetzt ->ergo 2 Parameter statt 1.
Wenn's ein Aufmerksamkeitstest war, bist du durchgefallen :-P
Wenn ein Dateiname Leerzeichen enthält, muss man ihn auf der Windows-Shell in Anführungszeichen setzen. Man erwartet dann natürlich auch, dass wenn man ihn so als Parameter an ein Python-Skript übergibt, er auch als eine Element bei sys.argv ankommt. Das ist schenibar nicht so :-/
Ich glaube nicht, dass Python die in **argv vorgefundenen Argumente nochmal aufsplittet, bevor sie in sys.argv hinterlegt werden. Also duerfte hier wohl eher schon auf Windows-Ebene etwas schief gegangen sein. Ist das Resultat das gleiche, wenn du statt "python" "pythonw" verwendest? Gibst du diese Kommandozeile direkt in der Konsole ein, oder steht da noch ein Batch-Script dazwischen? -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Hallo, der Fehler lag bei mir :-( oder auch :-) Schorsch hat mich auf den Fehler gebracht. Ich habe alles aus einer Batchdatei heraus getestet. An Stelle der Batchdatei, die ich zum Testen editiert habe, lief aber eine andere. Und in dieser hatte ich den Namen nicht in " " eingeschlossen. Blöder Fehler ... ich weis. Entschuldigt also bitte nochmals die 'Aufregung' am Freitag. Michael Georg Mischler schrieb:
Gerhard Häring wrote:
Andreas Kuntzagk wrote:
Michael Grabietz wrote :
1. python mein_skript.py "input_data.dat" 2. python mein_skript.py "input data.dat" Was mache ich falsch ?
Ist das jetzt ein Aufmerksamkeitstest oder was? :-) Du hast bei 2. den '_" durch ein " " ersetzt ->ergo 2 Parameter statt 1.
Wenn's ein Aufmerksamkeitstest war, bist du durchgefallen :-P
Wenn ein Dateiname Leerzeichen enthält, muss man ihn auf der Windows-Shell in Anführungszeichen setzen. Man erwartet dann natürlich auch, dass wenn man ihn so als Parameter an ein Python-Skript übergibt, er auch als eine Element bei sys.argv ankommt. Das ist schenibar nicht so :-/
Ich glaube nicht, dass Python die in **argv vorgefundenen Argumente nochmal aufsplittet, bevor sie in sys.argv hinterlegt werden. Also duerfte hier wohl eher schon auf Windows-Ebene etwas schief gegangen sein.
Ist das Resultat das gleiche, wenn du statt "python" "pythonw" verwendest? Gibst du diese Kommandozeile direkt in der Konsole ein, oder steht da noch ein Batch-Script dazwischen?
-schorsch
-- ******************************************************************* * Michael Grabietz * * Ingenieurbuero Michael Grabietz * * Phone: ++49 (9341) 89 66 70 Luft- und Raumfahrttechnik * * Fax: ++49 (9341) 89 66 71 Stauferring 56 * * e-mail: D-97941 Tauberbischofsheim * * michael.grabietz@img-online.de Germany * ******************************************************************* _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
Wenn's ein Aufmerksamkeitstest war, bist du durchgefallen :-P
Autsch, beim naechsten mal doch gruendlicher lesen. Andreas _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (4)
-
Andreas Kuntzagk -
Georg Mischler -
Gerhard Häring -
Michael Grabietz