Seite 1 von 1

List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 12:04
von thomas15
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!

Re: List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 12:31
von Hyperion
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?

Re: List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 12:41
von thomas15
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?

Re: List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 13:46
von thomas15
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!

Re: List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 13:48
von numerix
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'>

Re: List argument fuer Python

Verfasst: Montag 20. Dezember 2010, 13:52
von Hyperion
Dir ist natürlich klar, dass eval speziell in diesem Falle gefährlich ist?