Pregunta

Estoy tratando de ejecutar un programa desde la línea de comandos en Windows. Estoy teniendo algunos problemas. El código es el siguiente:

commandString = "'C:\Program Files\WebShot\webshotcmd.exe' //url '" + columns[3] + "' //out '"+columns[1]+"~"+columns[2]+".jpg'"
os.system(commandString)
time.sleep(10)

Así que con las comillas simples consigo "El nombre de archivo, nombre de directorio o etiqueta del volumen es incorrecto." Si sustituyo las comillas simples con \" entonces se dice algo en el sentido de ' 'C: \ Program'. No es un ejecutable válido'

Me doy cuenta de que es un error de sintaxis, pero no estoy muy seguro de cómo solucionar este problema ....

columna [3] contiene una URL completa copia pegada desde un navegador web (por lo que debe ser codificada url). columna [1] sólo contendrá números y puntos. columna [2] contiene un texto, entre comillas dobles y dos puntos son reemplazados. Mencionar si acaso ...

Gracias!

¿Fue útil?

Solución

Utilice la href="http://docs.python.org/library/subprocess.html" rel="nofollow noreferrer"> subproceso módulo

Otros consejos

  • Windows requiere comillas dobles en esta situación, y que utiliza comillas simples.
  • Utilice el módulo subprocess en lugar de os.system, lo que es más robusto y evita llamar la cáscara directamente, por lo que no tiene que preocuparse acerca de los problemas que escapan confusas.
  • no uso + juntar cadenas largas. Utilice el formateo de cadena (string %s" % (formatting,)), que es más legible, eficiente e idiomático.
  • En este caso, no forman una larga cadena como un comando shell de todos modos, hacer una lista y pasarlo a subprocess.call.
  • Lo mejor que puedo decir que se está escapando de su barra inclinada, pero no sus barras invertidas, que es al revés. Una cadena literal con // tiene dos barras en la cadena que produce. En cualquier caso, en lugar de cualquiera de los dos se debe utilizar el módulo de os.path que evita cualquier confusión de análisis sintáctico se escapa y, a menudo hace que los guiones más portable.
scroll top