List argument fuer Python

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.
Antworten
thomas15
User
Beiträge: 98
Registriert: Montag 7. April 2008, 19:07

Hallo,

ich rufe mein python so auf:
Exec name ist
pyDev

Code: Alles auswählen

#!/usr/bin/env csh

source paths.csh

python $*
Dann habe ich ein python script 'bin', welches mehrere parameter bekommt. Es wird natuerlich ueber

Code: Alles auswählen

#!/usr/bin/env pyDev
in der ersten Zeile gestartet.

Mit dem Argument '-s' moechte ich eine Liste von 6 ints uebergeben, also

Code: Alles auswählen

./bin.py -s [0,0,0,0,0,0]
Bekomme aber

Code: Alles auswählen

python: No match.
Was ist da los?

Mit anderen Parametern

Code: Alles auswählen

./bin.py -b 1 
funktionierts.

Danke schonmal!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Vermutlich werden "[" und "," von der Shell anders behandelt und führen zu dem Fehler. Hast Du das mal in Anfürungsstriche gesetzt? Zudem: Dir ist schon klar, dass Python das nicht "parsen" kann und Du kein Listenobjekt vom Interpreter serviert bekommst?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
thomas15
User
Beiträge: 98
Registriert: Montag 7. April 2008, 19:07

Hyperion hat geschrieben:Vermutlich werden "[" und "," von der Shell anders behandelt und führen zu dem Fehler. Hast Du das mal in Anfürungsstriche gesetzt? Zudem: Dir ist schon klar, dass Python das nicht "parsen" kann und Du kein Listenobjekt vom Interpreter serviert bekommst?
Hi Hyp,

ja, ich habs schon in ' und " gestellt. Gleicher Fehler.
Ich muss leider hier csh benutzen, denn in bash frisst ers.
Das mit dem parsen passiert intern mit eval.

Sonst jemand Indeen?
thomas15
User
Beiträge: 98
Registriert: Montag 7. April 2008, 19:07

thomas15 hat geschrieben:
Hyperion hat geschrieben:Vermutlich werden "[" und "," von der Shell anders behandelt und führen zu dem Fehler. Hast Du das mal in Anfürungsstriche gesetzt? Zudem: Dir ist schon klar, dass Python das nicht "parsen" kann und Du kein Listenobjekt vom Interpreter serviert bekommst?
der befehl geht in der csh mit

Code: Alles auswählen

./bin.py -s "0,0,0,0,0,0"
allerdings bekomme ich mit eval(argument) ein tupel. ist aber nicht weiter schlimm in meinem fall.

danke soweit!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

thomas15 hat geschrieben:allerdings bekomme ich mit eval(argument) ein tupel.

Code: Alles auswählen

>>> a = 1,2,3
>>> type(a)
<type 'tuple'>
>>> a = list(a)
>>> type(a)
<type 'list'>
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dir ist natürlich klar, dass eval speziell in diesem Falle gefährlich ist?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten