If you do not want to use the MARS syntax with the mars script we provide, you can directly use Python. The execute function accepts both a Python dictionary or a string. To use the 'list' function, the argument must be a string starting with 'list,'. In this example we convert the request dictionary to a string with 'list':
server = ECMWFService("mars")
req = {
"class": "od",
"date": "20150101",
"expver": "1",
"levtype": "sfc",
"param": "167.128",
"step": "0/to/240/by/12",
"stream": "oper",
"time": "00",
"type": "fc"
}
kv=['{}={}'.format(k, v) for k, v in req.items()]
kv='list,output=cost,{}'.format(','.join(kv))
server.execute(kv,'target.txt')