Flag control variable

Tim Chase python.list at tim.thechases.com
Tue Feb 11 13:51:14 EST 2014


On 2014-02-11 10:37, luke.geelen at gmail.com wrote:
>   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 +

This is the fault of your shell (bash perhaps)?

Try this:

  bash$  echo +
  +
  bash$  echo *
  (a list of files in your current directory here)

which occurs because of file-globbing.

You have a couple options that occur to me:

1) quote the asterisk:

  bash$ ./mycode.py 3 "*" 2

which will let Python see it without the shell expanding it

2) use a different character/string such as "3 times 2"

3) pass the whole thing as a quoted string and then let Python do the
splitting:

   bash$ ./mycode.py "3 * 2"

   a, operator, b = argv[1:].split()
   print(a,b,c)

-tkc






More information about the Python-list mailing list