0votos

Kata Args en Python

por josejuan hace 6 años

Una solución cualquiera.

Nunca tratar con los argumentos de un programa de consola fue tan divertido :). En esta kata crearemos un parseador de estos parámetros en base a un esquema predefinido. ¡suerte!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys 
import copy 
 
def parseArgs(sourceSchema, argv): 
  # sourceSchema := [['Name', HasValue, DefaultValue, IsArray]] 
  sch = copy.deepcopy(sourceSchema) 
  i = 0 
  L = len(argv) 
  while i < L: 
    p = False 
    for a in sch: 
      if argv[i] == '-' + a[0]: 
        p = True 
        if a[1]: 
          i += 1 
          if i >= L: 
            print 'Value expected on \"%s\" argument' % a[0] 
          else: 
            a[2] = argv[i] 
            if a[3]: 
              a[2] = a[2].split(',') 
        else: 
          a[2] = True 
    if not p: 
      print 'Unknow "%s" argument' % argv[i] 
    i += 1 
  return sch 
 
 
 
# == usage ================================================= 
 
for a in parseArgs([ 
  ['l', False, False, False], 
  ['p', True, 80, False], 
  ['d', True, '/tmp/log', False], 
  ['g', True, ['this', 'is'], True]] 
  , sys.argv[1:]): 
  print "Arg \"%s\" has value \"%s\"." % (a[0], a[2]) 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.