2012/4/6 mauricio rodriguez <rodriguez.maurici...@gmail.com>:
> Me auto respondo XDD
>
> Cuando ejecuto el modulo os.system('mkdir -p ruta/'+directorio) no funciona,
> siendo directorio una variable.
> Pero si ejecuto os.system('mkdir -p '+directorio) si funciona
>
> La solución chapusera es:
>
> users = f.read()
>
> #el contenido de users es ( ahora sin comas ): user1 user2 user3
>
> os.chdir('ruta')
> os.system('mkdir -p '+directorio)
>
> funciona pero si alguien tiene algo mas elegante o una explicación de por
> que es así bienvenido

El por qué no te funciona tu primer intento:

  os.system('mkdir -p a/b/{c,d,e}')

es sencillo: la expansión de a/b/{c,d,e} en "a/b/c a/b/d a/b/e" es
algo que tendría que hacer el shell que invoca "os.system" para
ejecutar la orden, pero no funciona por la manera en que se invoca
esto.(básicamente, es equivalente a /bin/sh -c "mkdir -p a/b/{c,d,e}")

Dicho eso, os.system("mkdir -p a/b/" + directorio) funcionará...
siempre que directorio sea uno solo, claro :P

Para tu caso hay varias soluciones, si no quieres hacer el chdir. Uno
sería hacer un loop sobre los directorios individuales:

  for d in directorios.split():
      os.system('mkdir -p ruta/' + directorio)

o, si insistes en hacerlo en una única orden

  os.system('mkdir -p ' + " ".join(os.join('ruta', d) for d in
directorios.split()))

que es equivalente a la expansión que realiza el shell
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a