I am trying to use argparse
module. I am dealing with 2 configuration files:
1.default cfg file 2. File provided by user.
If no file provided at run time, read from default file. And if user provides a file, use the content of provided file.
My question is : I want to provide default
field for each parser.add_agument
, so if it's not provided by user,it will always have some default value. These values can be read from either of the file (i.e. default or user given file). I need to check which file is provided and then from default/user-given-file import *
My code:
get_args.py
class GetArgs:
def get_args(self):
parser = argparse.ArgumentParser(description='foo')
#
parser.add_argument(
'-c', '--config', type=str, help='Provide a file',
required=False, default='settings.cfg')
#now note that below "default=version" will be from either "settings.cfg" or "user given file"
# here may be i need to import from file ?
parser.add_argument(
'-v','--version', type=str, help='API version', required=False, default=version)
args = parser.parse_args()
# Assign args to variables
config=args.config
version = args.version
retutn config,version
code to read cfg file: read_file.py
import ConfigParser
configParser = ConfigParser.RawConfigParser()
configParser.read(file)
try:
version= configParser.get('Set', 'version')
....
....
except ConfigParser.NoOptionError:
print "Option not found in configuration file!"
sys.exit(1)
something like:
1.python get_args.py #reads "version" from settings.cfg
2.python get_args.py --config /path/to/file/file.cfg #reads "version" file.cfg
It works perfect when i don't provide --config.
Is this possible to read dynamically?