Op dinsdag 11 februari 2014 20:01:05 UTC+1 schreef luke....@gmail.com: > Op dinsdag 11 februari 2014 19:51:40 UTC+1 schreef Peter Otten: > > > luke.gee...@gmail.com wrote: > > > > > > > > > > > > > well i'm trying something else but no luck : > > > > > > > > > > > > > > #!bin/bash/python > > > > > > > > > > > > Hm. > > > > > > > > > > > > > import sys > > > > > > > import os > > > > > > > > > > > > For debugging purposes put the line > > > > > > > > > > > > print sys.argv > > > > > > > > > > > > here to see what arguments are passed to the script. When you type > > > > > > > > > > > > $ python script.py 2 * 2 > > > > > > > > > > > > in the shell the "*" sign is replaced with all items in the current > > > > > > directory. To avoid that you have to escape, i. e. prepend a backslash: > > > > > > > > > > > > $ python script.py 2 \* 2 > > > > > > > > > > > > To illustrate: > > > > > > > > > > > > $ touch one two three > > > > > > $ ls > > > > > > one three two > > > > > > $ python -c 'import sys; print sys.argv' 2 + 2 > > > > > > ['-c', '2', '+', '2'] > > > > > > $ python -c 'import sys; print sys.argv' 2 * 2 > > > > > > ['-c', '2', 'one', 'three', 'two', '2'] > > > > > > $ python -c 'import sys; print sys.argv' 2 \* 2 > > > > > > ['-c', '2', '*', '2'] > > > > > > > > > > > > > a = int(sys.argv[1]) > > > > > > > sign = (sys.argv[2]) > > > > > > > b = int(sys.argv[3]) > > > > > > > > > > > > > > if sign == '+': > > > > > > > sum = a + b > > > > > > > print a, sign, b, "=", a + b > > > > > > > command1 = "sudo mpg321 > > > > > > > 'http://translate.google.com/translate_tts?tl=en&q=%s_plus%s_equals%s'" > > > > > > > % (a, b, sum) os.system (command1) > > > > > > > > > > > > > > elif sign == "*": > > > > > > > sum = a * b > > > > > > > print a, sign, b, "=", a * b > > > > > > > command1 = "sudo mpg321 > > > > > > > 'http://translate.google.com/translate_tts?tl=en&q=%s_times%s_equals%s'" > > > > > > > % (a, b, sum) > > > > > > > > > > > > > > when using * i get > > > > > > > > > > > > > > Traceback (most recent call last): > > > > > > > File "./math+.py", line 6, in <module> > > > > > > > b = int(sys.argv[3]) > > > > > > > ValueError: invalid literal for int() with base 10: > > > > > > > 'Adafruit-Raspberry-Pi-Python-Code' > > > > > > > > > > > > > > i don't understand why b is a problem, it works fine with + > > > > when using python script.py 2 \* 2 > > i get > > > > Traceback (most recent call last): > > File "math2.py", line 5, in <module> > > sign = int(sys.argv[2]) > > ValueError: invalid literal for int() with base 10: '*'
i found it int(sys.argv[2]) should be sys.argv[2] is there a way i can do python ./script.py 3 * 3 instead of python ./script 3 \* 3 ? -- https://mail.python.org/mailman/listinfo/python-list