Not enough arguments for format string

Pierre Barbier de Reuille pierre_dot_barbier at _nospam_cirad.fr
Mon Nov 14 12:20:58 EST 2005


Kevin Walzer a écrit :
> I'm getting an error in a Python script I'm writing: "not enough
> arguments for format string." The error comes at the end of the
> os.system command, referenced below. Any ideas?
> 
> ---
> 
> import EasyDialogs
> import os
> import sys
> 
> 
> password = EasyDialogs.AskPassword("To launch Ethereal, please enter
> your password:")
> binpath = os.path.join(os.path.dirname(sys.argv[0]),
> '/opt/local/bin/ethereal')   
>     
> os.system('open -a X11.app; cd ~/; printenv; DISPLAY=:0.0; export
> DISPLAY;  echo %s | sudo -S %s; sudo -k' %password %binpath)
> 
> TypeError: not enough arguments for format string
> 
> 

Well, just try :
os.system('open -a X11.app; cd ~/; printenv; DISPLAY=:0.0; export
DISPLAY;  echo %s | sudo -S %s; sudo -k' % (password, binpath) )

The reason is, you have 2 "%s" in yor string, thus after the "%"
operator, you need a 2-element tuple ! If you have either more or less
element, you'll get a TypeError ! In your code above you put a single
element ...

Pierre



More information about the Python-list mailing list