Seite 1 von 1

testen ob sys.arv[1] int enthält

Verfasst: Donnerstag 24. November 2016, 11:16
von cosmonaut
hi leute,
ich habe schon den ganzen morgen das internet durchforstet und bin leider noch nicht auf eine lösung gestoßen die mir weiter helfen konnte. Deshalb poste ich jetzt mal hier:
Ich versuche die terminal eingabe darauf zu testen ob der inhalt zwei int werte sind, um fehler abzufangen.

Code: Alles auswählen

def abfang():
	usage ='Richtige Eingabe: ' + sys.argv[0] + ' <Integer> <Integer>'

	if len(sys.argv) != 3:
		print (usage)
		exit(1)
	
	if type(sys.argv[1]) != int:
		print(type(sys.argv[1]))

		exit(1)

wenn ich im terminal das programm aufrufe mit:

python3 brute1.py 10 10

printed er mir bei sys.argv[1]

class 'str' obwohl nen int reingegeben wurde.....
was mache ich falsch?

über hilfe wäre ich super dankbar!

viele grüße cosmonaut

Re: testen ob sys.arv[1] int enthält

Verfasst: Donnerstag 24. November 2016, 11:26
von Sirius3
@cosmonaut: die Kommandozeilen-Parameter sind immer Strings, so wie auch jede Tastatureingabe Zeichen sind. Für Du Umwandlung mußt Du schon selbst sorgen. Am besten nimmst Du dazu aber das Paket argparse.

Re: testen ob sys.arv[1] int enthält

Verfasst: Donnerstag 24. November 2016, 12:17
von BlackJack

Code: Alles auswählen

#!/usr/bin/env python3
from argparse import ArgumentParser


def main():
    parser = ArgumentParser()
    parser.add_argument('start', type=int, help='first value to be tested')
    parser.add_argument('end', type=int, help='last value to be tested')
    options = parser.parse_args()
    print(options.start, options.end)


if __name__ == '__main__':
    main()
Testlauf:
[codebox=text file=Unbenannt.txt]$ ./forum3.py
usage: forum3.py [-h] start end
forum3.py: error: too few arguments

$ ./forum3.py -h
usage: forum3.py [-h] start end

positional arguments:
start first value to be tested
end last value to be tested

optional arguments:
-h, --help show this help message and exit

$ ./forum3.py 23 x
usage: forum3.py [-h] start end
forum3.py: error: argument end: invalid int value: 'x'

$ ./forum3.py 23 42
23 42[/code]

Re: testen ob sys.arv[1] int enthält

Verfasst: Freitag 2. Dezember 2016, 16:35
von cosmonaut
hey danke!
das hat geholfen. :)