I think this might be rewritten in a more pythonic way:
```
make_route = lambda line: dict(zip( ['iface', 'dest', 'gw'], line.split() ))
routes = [make_route(line) for line in list(open("/proc/net/route"))[1:]]
try:
  return next((r for r in routes if r['dest'] == '00000000'), routes[0])['iface']
Except:
  raise RuntimeError('No valid interfaces available')
```

Please notice that on my machine one of the values for `'dest'` is '0000FEA9', which raises a ValueError when fed to `int()`.
I would suggest to either compare the string (as above), or force the base of the conversion, ie: `int(r['dest'], 16)`.