Cuando uso optparse quiero obtener toda la cadena después de una opción, pero solo obtengo parte de ella hasta el primer espacio.Python optparse y espacios en un argumento
ej .:
python myprog.py --executable python someOtherProg.py
Lo que obtengo en 'ejecutable' es sólo 'pitón'.
¿Es posible analizar estas líneas usando optparse o tiene que usar argparse para hacerlo?
€:. Ya he probado encerrándolo en "s Pero después de cavar más lejos en el código que se enteraron de que la invocación subproceso no puede manejar el argumento
La cadena con la línea de comandos se embutida en una. lista args ''.
args = [self.getExecutable()] + self.getArgs().split()
Es como
"[python D:\\\workspace\\\myprog\\\src\\\myprog.py]"
que me da el sistema no puede encontrar el archivo de excepción. Cuando uso
args[0]
funciona. Pero pierdo los argumentos para el ejecutable.
El módulo de subproceso crea un cmdline de una lista si no obtiene una cadena en primer lugar, por lo que no puedo explicar ese comportamiento en este momento.
Prepárese para sorprenderse: en virtud de Python 3.5, un espacio escapado se representan literalmente por sys.argv! En C, tenemos 'pitón tonto algunos':' argv [1] '=' "python" ',' argv [2] '=' "some" '. pitón "tonto" algunos "': 'argv [1]' = '" python algunos "'. Y 'tonto python \ some':' argv [1] '=' "python algunos" '. Pero con Python 3.5 tenemos 'silly.py python some':' argv [1] '=' "python" ',' argv [2] '=' "some" '. 'tonto.py" pitón algunos "': 'argv [1]' = '" pitón algunos "'. Y 'silly.py python \ some':' argv [1] '=' "python \\" ',' "some" '. ¡Asombroso! – Urhixidur