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/