blog.humaneguitarist.org
parsing command line options kinda like GET variables in Python
[Sun, 07 Oct 2012 16:19:17 +0000]
I think - OK I know - I had a drink too many last night.
... and tomorrow I'll be working from home to clean up this script that we'll be using to harvest metadata feeds. Currently, just OAI/Simple Dublin Core but the script should support any XML feed as long as it's parse-able via XSLT 1.0 and as long as the paging of items can be facilitated via being in the XML itself (i.e. OAI's brilliant Resumption Token) or via numeric GET variable values a la:
&page=1 ... &p=3 ... &nextPage=4 ... etc.<br/>
Anyway, I need a simple way to pass arguments via the command line and for whatever reason I don't want to use the deprecated "optparse" module (well, I guess the reason is it's deprecated) or the "argparse" module.
I think I'll just use the following which lets me pass arguments kinda like GET variables in a URL. Sure, there's no error checking or messaging, but I really don't care. Maybe I'll care more tomorrow when my head's a little clearer.
:)
def args2dict():
import sys
args = sys.argv
args = args[1].split("$")
args_dict = {}
for arg in args:
keyVal = arg.split("=")
key = keyVal[0]
val = keyVal[1]
args_dict[key] = val
return args_dict
# this returns a dictionary with each variable name as a key; the variable's value is the key's value
Say this is in a script called "test.py" which calls the function a la:
myArgs = args2dict()
print myArgs
print myArgs["a"]
if myArgs.has_key("foo"):
print "yes"
If I run the following:
$ test.py a=1$b=2$c=3$foo=bar<br/>
I get this:
{'a': '1', 'c': '3', 'b': '2', 'foo': 'bar'}<br/>
1<br/>
yes<br/>