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

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
Geb1980
User
Beiträge: 4
Registriert: Dienstag 28. Oktober 2008, 11:33

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?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Geb1980, willkommen im Forum,

Das ist eine Sache der Shell, versuch mal 'wert="1.0"'.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Geb1980
User
Beiträge: 4
Registriert: Dienstag 28. Oktober 2008, 11:33

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...
__marcus__
User
Beiträge: 92
Registriert: Mittwoch 10. September 2008, 22:10
Wohnort: Hamburg

Code: Alles auswählen

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

Bei Dir nicht?
Geb1980
User
Beiträge: 4
Registriert: Dienstag 28. Oktober 2008, 11:33

__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. :(
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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"
Geb1980
User
Beiträge: 4
Registriert: Dienstag 28. Oktober 2008, 11:33

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.
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.
Antworten