I have a script that needs to take in the name of a file and a set of key=value pairs. The set of key=value pairs is not defined. They are dependent on the file that was passed in.
eg:
Script.py file1 bob=1 sue=2 ben=3 # file 1 needs bob, sue, and ben
Script.py file2 mel=1 gorge=3 steve=3 # file 2 needs mel, gorge, and steve
Is this possible with argparse / optparse or do I have to build my own parser?
That should be fairly easy to parse yourself. Use of the helper libraries would be complicated by not knowing the keys in advance. The filename is in sys.argv[1]. You can build the dictionary with a list of strings split with the ‘=’ character as a delimiter.
Output:
That’s the gist of it, but you may need more robust parsing of the key-value pairs than just splitting the string. Also, make sure you have at least two arguments in
sys.argvbefore trying to extract the filename.