python problem mit argumentmodul -_-

Diskutiere python problem mit argumentmodul -_- im Developer Network Forum im Bereich Hardware & Software Forum; moin leute, nach langer zeit habe ich wieder ne frage an euch. ich habe da ein problem mit einem python-skript. wenn ich folgenden code...
  • python problem mit argumentmodul -_- Beitrag #1
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
moin leute,
nach langer zeit habe ich wieder ne frage an euch.
ich habe da ein problem mit einem python-skript.

wenn ich folgenden code verwende dann funzt zumindestens ein teil der idee :
Code:
import sys
name = sys.argv[1]
if sys.argv[1] == 'help':
	print "usage: python name.py 'your name'"
else:
	print 'Your name is '+name


wenn ich also python name.py help eingebe kommt die hilfe wenn ich einen namen eingebe kommt der satz your name is xyz soweit so gut

aber nun möchte ich das die hilfe auch dann angezeigt wird wenn ich folgendes nur eingebe
python name.py

also keine argumente setze...habe schon alles probiert und ja ich weis es wird wieder irgendwas sein wo ich mich ärgern werde das ich es nicht gesehen habe -_- ^^


würde mich auf hilfe sehr freuen

mfg
 
  • python problem mit argumentmodul -_- Beitrag #2
S

Stefan

Guest
Ich hab leider keine Erfahrung mit Python, aber hast du mal sys.argv.length == 0 als Bedingung für deinen Fall probiert?
 
  • python problem mit argumentmodul -_- Beitrag #3
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
habs probiert aber haut nicht hin :/
Code:
import sys
name = sys.argv[1]
if sys.argv.length == 0:
	print "usage: python name.py 'your name'"
else:
	print 'Your name is '+name

bekomme leider immernoch ne meldung :(
 
  • python problem mit argumentmodul -_- Beitrag #4
S

Stefan

Guest
Äh sorry, ich hab zu schnell geschlossen... müsste == 1 sein, denn im ersten Argument steht ja üblicherweise der Dateiname des Scripts drin.

Sonst lass dir das argv-Array einfach mal ausgeben, dann solltest du den Aufbau und Unterschied schnell feststellen können.

Freundliche Grüße

Stefan
 
  • python problem mit argumentmodul -_- Beitrag #6
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
print 'Your name is '+str(name)

vlt. hats probleme mit der eingabe und man muss casten. hab mit python schon so manchen seltsamen cast durchführen müssen

edit:

sicher ist sicher, aber wahrscheinlich tuts auch ohne str(). denke die hochkommas musst Du escapen:

Code:
import sys
name = sys.argv[1]
if sys.argv.length == 0:
	print "usage: python name.py \'your name\'"
else:
	print "Your name is "+str(name)
 
  • python problem mit argumentmodul -_- Beitrag #7
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
Traceback (most recent call last):
File "name.py", line 2, in <module>
name = sys.argv[1]
IndexError: list index out of range


das is die meldugn die ich bekomme.
auch mit der idee von lambo-benni

wenn ich es um änder ohne das str() mache kommt sie trotzdem
hier nochmal einmal dann mit und einmal ohne name die ausgabe der konsole:

root@bt:~# python name.py
Traceback (most recent call last):
File "name.py", line 2, in <module>
name = sys.argv[1]
IndexError: list index out of range
root@bt:~# python name.py Thorsten
Traceback (most recent call last):
File "name.py", line 3, in <module>
if sys.argv.length == 0:
AttributeError: 'list' object has no attribute 'length'
root@bt:~#

ich weis nich mehr weiter ich habe selber keine idee mehr wenn ich eine if mache und sage das wenn sys.argv[1] == 'help': ist dann funzt es eigentlich muss es doch auch so gehen
if sys.argv[1] == '':
rein theoretisch für mich erscheint es so logischer aber auch hier kein erfolg :/ also so:

Code:
import sys
name = sys.argv[1]
if sys.argv[1] == '':
	print 'usage: python name.py "your name"'
else:
	print 'Your name is '+name

aber dann bekomme ich das hier:

root@bt:~# python name.py
Traceback (most recent call last):
File "name.py", line 2, in <module>
name = sys.argv[1]
IndexError: list index out of range
root@bt:~#
 
  • python problem mit argumentmodul -_- Beitrag #8
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
name = sys.argv[0] (nicht[1]) schon probiert?

und dann natprlich
if sys.argv[0] == 'help':
 
  • python problem mit argumentmodul -_- Beitrag #9
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
wenn ich bei sys.argv den wert 0 nehme bekomme ich von dem program zu hören das mein name name.py is ;))
das prog stört sich die ganze zeit an name = sys.argv[1]
weil wenn ich das leer lasse dann sagt er mir out of range nur er kommt auch immer nur darauf weil er die if komplett ingoriert und die else nimmt selbst wenn ich die variable
name = sys.argv[1]
mit in den else abteil nehme nimmt er diese immernoch.....heist er nimmt nur die else und stellt die if auf igno o__0 wieso eigentlich ????

@lambo-benni
das mit dem help befehl also das wenn ich help eingebe das habe ich schon geschafft das er mir dann die hilfe die ich ihm vorgebe ausgibt....war auch nich sonderlich schwer aber nun möchte ich ja das gleiche bezwecken nur ohne help...das prog soll die hilfe anzeigen wenn ich nur python name.py eingebe...und das haut leider nich hin :/ ;) aber trotzdem danke


also ich sitze seit gestern abend davor und ich habe keine idee mehr...
 
  • python problem mit argumentmodul -_- Beitrag #10
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
if len(sys.argv) <= 1

oder mal die anzahl der parameter ausgeben lassen
print str(len(sys.argv))

if sys.argv[1] == '':
bringt wahrscheinlich "IndexError: list index out of range" weil Du keinen weiteren parameter angegeben hast
 
  • python problem mit argumentmodul -_- Beitrag #11
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
ich habe jetzt so eine vermutung wenn ich mal das eingebe:
Code:
import sys
print str(len(sys.argv))

und ich dann nur python name.py angebe gibt er mir 1 aus
sollte ja eigentlich zeigen das ich jetzt einfach ne neue anweisung schreibe
die sagt:

Code:
import sys
strlen = str(len(sys.argv))
if strlen == 1:
      print 'usage: python name.py "your name"'
else:
      name = sys.argv[2]
      print 'Your name is '+name
gibt aber die gleiche fehler meldung
 
  • python problem mit argumentmodul -_- Beitrag #12
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
Code:
import sys

if len(sys.argv) < 2:
      print 'usage: python name.py \"your name\"'
else:
      name = sys.argv[1]
      print 'Your name is '+name


strlen = str(len(sys.argv))
if strlen == 1:
-> das geht nicht; mit str() erzeugst Du einen string aus len(sys.argv); den kannst Du dann nicht mit einem int vergleichen

name = sys.argv[2]
-> gleicher fehler wie vorhin mit sys.argv[2]; wenn "name.py Horst" ausführst ist sys.argv[2] nicht definiert, sondern nur sys.argv[0] und sys.argv[1]
 
  • python problem mit argumentmodul -_- Beitrag #13
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
einwandfrei :D
danke !!!! es funkt ;D
aber ne kleine frage am rande habe ich trotzdem noch was bedeuten die \ bei your name? wenn ich die weglasse funzt es trotzdem
 
  • python problem mit argumentmodul -_- Beitrag #14
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
einwandfrei :D
danke !!!! es funkt ;D
aber ne kleine frage am rande habe ich trotzdem noch was bedeuten die \ bei your name? wenn ich die weglasse funzt es trotzdem

wenn es auch ohnt die tut, ists ok. die werden benutzt um sonderzeichen zu "escapen", d.h. damit der parser weiß, dass diese Zeichen dann nicht zum code gehören, sondern, wie in diesem Beispiel, zum Text, der ausgegeben werden soll.

print "Dies ist ein "kurzer" Text." -> Fehler, wegen der "
print "Dies ist ein \"kurzer\" Text. -> korrekte Ausgabe (die \ werden natürlich nicht ausgegeben)
 
  • python problem mit argumentmodul -_- Beitrag #15
wardriver

wardriver

Bekanntes Mitglied
Dabei seit
04.06.2012
Beiträge
123
Reaktionspunkte
0
Ort
Internet
achso ^^
deswegen habe ich ja bei print das ' gesetzt und die anderen dann mit " und den string dann mit ' wieder beendet kann man aber halt auch andersrum machen ;)

super vielen dank noch mal :D
 
Thema:

python problem mit argumentmodul -_-

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.171
Mitglieder
55.876
Neuestes Mitglied
RamiroGarn
Oben