passing multiple string to a command line option

Terry Reedy tjreedy at udel.edu
Thu Oct 6 13:18:10 EDT 2011


On 10/6/2011 11:27 AM, Mahmood Naderan wrote:
> Dear developers,
> Suppose I have this list in command line options:
> ... -b b1,b2,b3
>
> Here is what I wrote:
> parser = optparse.OptionParser()

If you are starting a new project, consider using argparse, which has 
superceded optparse.

> # Benchmark options
> parser.add_option("-b", "--benchmark", default="", help="The benchmark to be loaded.")
> process = []
> benchmarks = options.benchmark.split(',')
> for bench_name in benchmarks:
>      process.append(bench_name)
>
> At this stage, I want to bind each process to something:
> np = 2
> for i in xrange(np):
>      ...
>      system.cpu[i].workload = process[i]
>
> however I get this error:
>
>    File "configs/example/cmp.py", line 81, in<module>
>      system.cpu[i].workload = process[i]
>    File "/home/mahmood/gem5/src/python/m5/SimObject.py", line 627, in __setattr__
>      value = param.convert(value)
>    File "/home/mahmood/gem5/src/python/m5/params.py", line 236, in convert
>      tmp_list = [ ParamDesc.convert(self, value) ]
>    File "/home/mahmood/gem5/src/python/m5/params.py", line 159, in convert
>      return self.ptype(value)
> TypeError: __init__() takes exactly 1 argument (2 given)
> Error setting param TmpClass.workload to bzip2_chicken
>
> params.py is part of the simulator and I didn't wrote that.
>
> My question is what is the simplest way to fix that?
> Or is there any better idea than what I did in order to parse such command line option?
>
>   thanks
>
> // Naderan *Mahmood;


-- 
Terry Jan Reedy




More information about the Python-list mailing list