Seite 1 von 1

sys.argv - Übergabe von Argumenten mit Anführungszeichen

Verfasst: Dienstag 28. Oktober 2008, 11:42
von Geb1980
Hallo,
ich beschäftige mich erst seit einigen Wochen mit Python und habe folgendes Problem.

Ich möchte meinem Python-Programm "program.py" Werte übergeben:

Mein Aufruf: python.exe program.py "wert="1.0""

Python empfängt folgendes:
wert=1.0

Richtig wäre jedoch:
wert="1.0"

Gibt es eine Möglichkeit, dass die Anführungszeichen erhalten bleiben? Momentan habe ich herausgefunden, dass Anführungszeichen erhalten bleiben, wenn man diese durch 3 Anführungszeichen ersetzt.


Auszug:
import sys
import re

end=len(sys.argv)
zstop=""
print sys.argv

for i in range(0, end):
zstop=zstop + " " + sys.argv
print zstop

Vielleicht hat ja jmd einen Tip oder ähnliche Erfahrungen gesammelt?!

Verfasst: Dienstag 28. Oktober 2008, 12:00
von Leonidas
Hallo Geb1980, willkommen im Forum,

Das ist eine Sache der Shell, versuch mal 'wert="1.0"'.

Verfasst: Dienstag 28. Oktober 2008, 12:07
von Geb1980
Leonidas hat geschrieben:Hallo Geb1980, willkommen im Forum,

Das ist eine Sache der Shell, versuch mal 'wert="1.0"'.
Hallo Leonidas,
vielen Dank für deine Hilfe. Auch bei diesem Beispiel werden die Anführungszeichen entfernt.

Ergebnis ist: wert=1.0 :(

Man bräuchte eine Option, die den String so wie er ist übergibt - ohne irgendwelche Zeichen zu interpretieren.

Unter python --help habe ich nichts passendes finden können...

Verfasst: Dienstag 28. Oktober 2008, 12:39
von __marcus__

Code: Alles auswählen

import sys
print sys.argv[1]
python cmd.py 'wert="1.0"'
wert="1.0"

Bei Dir nicht?

Verfasst: Dienstag 28. Oktober 2008, 12:50
von Geb1980
__marcus__ hat geschrieben:

Code: Alles auswählen

import sys
print sys.argv[1]
python cmd.py 'wert="1.0"'
wert="1.0"

Bei Dir nicht?
Hallo Marcus,
mittlerweile vermute ich dass es entweder von der Python Version oder vom Betriebssystem abhängig ist.

Ich bin an Python Version 1.5.2 gebunden, sowie WIN2K3 - und bei mir verschwinden diese Zeichen definitiv. :(

Verfasst: Dienstag 28. Oktober 2008, 12:51
von Zap
unter DOS:

Code: Alles auswählen

X:\>python cmd.py 'wert="1.0"'
'wert=1.0'

X:\>python cmd.py wert=\"1.0\"
wert="1.0"

Verfasst: Dienstag 28. Oktober 2008, 12:56
von Geb1980
Zap hat geschrieben:unter DOS:

Code: Alles auswählen

X:\>python cmd.py 'wert="1.0"'
'wert=1.0'

X:\>python cmd.py wert="1.0"
wert="1.0"
Hallo Zap,
vielen Dank für die Hilfe. Leider erhalte ich den String aus einer Datenbank, den ich vor der Übergabe in mein Python Programm nicht abändern kann. Daher kann ich diese Möglichkeit nicht verwenden.

Verfasst: Dienstag 28. Oktober 2008, 13:04
von BlackJack
@Geb1980: Es ist letzendlich keine Python-Frage. Du musst heraus finden, wie man bei der Shell, also wohl in diesem Fall `cmd.exe`, Anführungszeichen "schützt". Der Python-Interpreter hat da keinen Einfluss drauf, wenn der keine Anführungszeichen bekommt, wurden die schon *vor* dem Aufruf von der Shell entfernt.