Seite 1 von 1

Phyton auf Windows - Probleme mit sys.argv[xx]

Verfasst: Dienstag 21. März 2006, 09:47
von Frank_Hanson
Hallo

Ich habe die dankbare Aufgabe erhalten einige funktionsfähige Skripts auf Windows zu implementieren. Jedoch bereitet mir Windows Probleme und bricht das Skript jedes Mal mit einem Syntax-Error ab, beim ersten sys.argv[2] ab. Kurz der Code:


Code: Alles auswählen

import sys
import os
if sys.argv[1] == '-port':
sql = "select * from HOSTS where PORT like " + "`" + sys.argv[2] + "`"
elif sys.argv[1] == '-name':
sql = "select * from HOSTS where HOST_ALIAS like " + "`" + sys.argv[2] + "`"
usw. usw.
else:
print "\n Nothing found for: " + sys.argv[2]

Hat jemand eine Idee? Danke für euren Support

Frank

Habs korrigiert ;)

Verfasst: Dienstag 21. März 2006, 10:01
von Rebecca
Am Ende von Zeile 5 und 7 ist jeweils ein Gaensefuesschen zuviel. Das sieht man schon an der Farbgeung des Syntax-Highlighting.

Da kann Windows nun wiklich nix fuer! :wink:

Verfasst: Dienstag 21. März 2006, 10:13
von Frank_Hanson
Huch, nun trotz einem Gänsefüsschen weniger kommt dieser Text in der Shell

sql = "select * from HOSTS where PORT like " + "`" + sys.argv[2] + "`"

Syntax Error: Invalid Syntax


Das ^ ist unter dem 'g' von argv.

Verfasst: Dienstag 21. März 2006, 10:15
von modelnine
Wie wärs mit Einrückung? Die ist nicht korrekt.

Verfasst: Dienstag 21. März 2006, 10:16
von Frank_Hanson
Wie ist das gemeint? Unter RedHat funktioniert es einwandfrei.

Verfasst: Dienstag 21. März 2006, 10:16
von jens
Mach doch sowas:

Code: Alles auswählen

port = sys.argv[2]
print port
sql = "select * from HOSTS where PORT like `%s`"  % port
Dir ist aber schon klar, das man generell so keine SQL-Statements zusammen bauen sollte, ja?

Aus http://wiki.python.de/Thema_Sicherheit#Tipps
Zum Vermeiden von SQL-Injections sollte man zuerst die SQL Escaping Funktion des Datenbank Moduls verwenden. Wie das geht steht unter Parametrisierte SQL Queries.
http://wiki.python.de/Parametrisierte_SQL_Queries

Re: Phyton auf Windows - Probleme mit sys.argv[xx]

Verfasst: Dienstag 21. März 2006, 10:18
von gerold
Frank_Hanson hat geschrieben:Jedoch bereitet mir Windows Probleme und bricht das Skript jedes Mal mit einem Syntax-Error ab, beim ersten sys.argv[2] ab.

Code: Alles auswählen

import sys
import os
if sys.argv[1] == '-port':
sql = "select * from HOSTS where PORT " + "`" + sys.argv[2] + "`"
elif sys.argv[1] == '-name':
Hi Frank!

Ich sehe hier einige Backticks (`) im Code. Tausche die doch mal gegen
einfache Anführungszeichen (') aus.

mfg
Gerold
:-)

Edit: Schei... - die Einrückung hatte ich übersehen. :-(

Verfasst: Dienstag 21. März 2006, 10:21
von modelnine
Dein Post enthielt keinerlei Einrückung, sprich:

Code: Alles auswählen

if blah:
blubb()
Das führt zwangsläufig zu einem SyntaxError. Da Du nirgends (wirklich) deutlich gemacht hast dass Du nicht den Code postest den Du probierst auszuführen konnte ich zumindest in meiner Kristallkugel nicht drauf kommen dass Du tatsächlich schon funktionierenden Code hast. Nächstes mal echten Code posten, kein Pseudocode.

Re: Phyton auf Windows - Probleme mit sys.argv[xx]

Verfasst: Dienstag 21. März 2006, 10:31
von Frank_Hanson
Hab ich angepasst, jedoch ohne nennenswerte Verbesserung!
gerold hat geschrieben:
Frank_Hanson hat geschrieben:Jedoch bereitet mir Windows Probleme und bricht das Skript jedes Mal mit einem Syntax-Error ab, beim ersten sys.argv[2] ab.

Code: Alles auswählen

import sys
import os
if sys.argv[1] == '-port':
sql = "select * from HOSTS where PORT " + "`" + sys.argv[2] + "`"
elif sys.argv[1] == '-name':
Hi Frank!

Ich sehe hier einige Backticks (`) im Code. Tausche die doch mal gegen
einfache Anführungszeichen (') aus.

mfg
Gerold
:-)

Edit: Schei... - die Einrückung hatte ich übersehen. :-(

Verfasst: Dienstag 21. März 2006, 10:37
von modelnine
Poste doch mal bitte genau den Code den Du probierst auszuführen... Oder noch besser: stell das Ding auf einer Webseite zur Verfügung. Es kann nämlich durchaus sein, dass der Code den Du jetzt mehrfach gepostet hast nicht der Code ist den Du probierst auszuführen. Es wäre nix neues wenn wir uns hier einen Wolf raten, aber im Endeffekt es schlicht und ergreifend daran liegt dass nicht der echte Code gepostet wurde, sondern der Schreiber probiert hat den Code anzupassen um ihn zu posten, und dadurch implizit den Fehler korrigiert hat...

Sonst: Du siehst wie "kristallkugelmäßig" hier vorgegangen wird. Das bringt Dir wirklich nix...

Verfasst: Dienstag 21. März 2006, 10:43
von Frank_Hanson
Das mit dem Einfügen wars. Windows hat die 'Formatierungen' nicht 1:1 von Linux übernommen. Es funktioniert nun einwandfrei.

Danke für eure Hilfe!