Seite 1 von 1

liste mit sys.argv[] übergeben

Verfasst: Freitag 27. Juni 2008, 20:05
von smolle
Hallo,
könnt ihr mir bitte helfen.
Ich möchte eine Liste in folgender Form in der Kommandozeile übergeben:
....test.py ((para1,para2,para3),(para4,para5,para6))

Quellcode von test.py:
Parameter = list(sys.argv[1])

Die Typ Umwandlung wird gemacht aber die Liste sieht dann so aus:
["(", "(", "p", "a", "r", "a", "1", ","................)"] und so weiter.

Gibts da vieleicht ne Möglichkeit. Ich weiß nicht mehr weiter.
Vielen Dank für eure Hilfe

Verfasst: Freitag 27. Juni 2008, 20:15
von numerix
Hallo smolle,

du übergibst quasi nur einen Parameter an dein Programm, weil du keine trennen Leerzeichen verwendest.

Danach nimmst du diesen einen Parameter, der als Zeichenkette ankommt, und machst eine Liste daraus - das hat zur Folge, dass die Zeichenkette in Zeichen zerlegt wird, die als Elemente deiner Liste auftauchen.

Die einfachste Möglichkeit wäre, die Parameter in der Form

Code: Alles auswählen

test.py para1 para2 para3 etc.
zu übergeben.

Wenn du das nicht willst, dann musst du den einen übergebenen Parameter (als Zeichenkette) so bearbeiten, dass du die gewünschten Parameter extrahierst.

Edit:
Also wenn du wirklich die Parameter nur hinter einander in einer Liste haben willst (keine Tupel - das suggeriert nämlich die Notation deiner Parameter), dann z.B. so:

Code: Alles auswählen

arglist = sys.argv[1].replace('(','').replace(')','').split(',')

Verfasst: Samstag 28. Juni 2008, 14:43
von smolle
Vielen Dank hat mir weiter geholfen.
Der Programmcode sieht nun so aus:

zu übergebener string: (("a1","a2","a3","a4"),("b1","b2","b3","b4")("c1","c2","c3","c4"))

list =(sys.argv[2]).replace('((','').replace('))','').split('),(')

list2=[]
for z in list:
list1 = z.split(',')
list2.append(list1)


for res in list2:
Parameter1 =res[0]
Parameter2 =res[1]
Parameter3=res[2]
Parameter4 =res[3]

Ausgabe:

Parameter1 = a1
Parameter2 = a2
Parameter3 = a3
Parameter4 = a4

Parameter1 = b1
Parameter2 = b2
Parameter3 = b3
Parameter4 = b4

Parameter1 = c1
Parameter2 = c2
Parameter3 = c3
Parameter4 = c4

Was meint ihr geht das so in Ordnung oder zu umständlich

Verfasst: Samstag 28. Juni 2008, 15:44
von numerix
smolle hat geschrieben:Was meint ihr geht das so in Ordnung oder zu umständlich
"Umständlich" ist irgendwie nicht das richtige Wort. Es ist total verquer.

Ich glaube, der momentan beste Ansatz wäre, das Tutorial von der ersten Seite an zu lesen soweit bist du an die Stellen kommst, wo das behandelt wird, was du brauchst. Dann kriegst du es alleine anständig hin.