optparse -- anyway to find if the user entered an option?

Karthik Gurusamy kar1107 at gmail.com
Sun Apr 15 01:49:22 CEST 2007


Hi,

I see that I can provide a default value for an option. But I couldn't
find out any way if the user really entered the option or the option
took that value because of default. A simple check for value with
default may not always work as the user might have manually
entered the same default value.

Let's assume I want to take in the ip-address using -i <ip-addr>.
If user didn't give it explicitly, I am going to use socket interface
to figure out this host's IP address.

ip_addr_default  = '100.100.100.100'

parser.add_option("-i", "--ip-address", dest="ip",
default=ip_addr_default,
           metavar="IP-ADDRESS", help="IP address. default:" +
           ip_addr_default + "e.g. --i=1.1.1.1"
           )

(options, args) = parser.parse_args()

Now if options.ip == ip_addr_default, I still can't be 100% sure that
the user did not type -i 100.100.100.100.
Any way to figure out from options that the user typed it or not?

(The reason I want to know this is if user did not mention -i, I can
compute IP later
using socket module)

I could think of a hack of using None as default and since no user can
ever
enter a None value, I can be sure that the user didn't provide -i.
I'm wondering if there is a cleaner approach -- something like
parser.opt_seen("-i")

Thanks,
Karthik




More information about the Python-list mailing list