Pasando comillas dobles a un comando de Python usando el módulo de subproceso

Tengo un progtwig de línea de comandos que estoy usando desde un script de Python para encargarme de sellar un número de comstackción en un ejecutable.

Este es el progtwig de línea de comandos: http://www.elphin.com/downloads/stampver/

Mi problema es que el progtwig toma comillas dobles (“) en uno de sus argumentos y el módulo de subproceso de Python que estoy usando para llamar a este progtwig sigue añadiendo una barra invertida a las comillas dobles al ejecutar el progtwig. Esto hace que el progtwig falle. a la syntax incorrecta.

Está esperando un comando como: StampVer.exe -nopad -k -f"0.1.4491.0" .exe

Y, en cambio, Python está ejecutando: StampVer.exe -nopad -k -f\"0.1.4491.0\" .exe

He probado algunas cosas que he encontrado aquí en StackOverflow para problemas de sonido similares, como marcar la cadena como sin formato o agregar barras diagonales inversas antes de las comillas en Python; que solo da como resultado barras diagonales triples en la línea de comandos en lugar de una, porque Python intenta escapar de la barra diagonal inversa, así como la comilla doble.

¿Debo usar algo que no sea el módulo de subproceso para lograr esto o hacer que todos estos tipos de módulos en Python sigan las mismas reglas para escapar de los caracteres? ¿Hay algo que pueda hacer para decirle al subproceso que elimine los caracteres de escape o que no los agregue?

EDITAR

Así es como llamo al subproceso de Python:

 def set_file_version(version_number, filepath): try: file_version_arg = '-f"{0}"'.format(version_number) cmd_line = ["StampVer.exe", "-nopad", "-k", file_version_arg, filepath] subprocess.check_output(cmd_line) except subprocess.CalledProcessError as e: if e.returncode == 1: pass else: raise e 

StampVer luego devuelve esto:

error: Invalid -f parameter. Try -f"0.0.0.0" Use StampVer -? for help

prueba este script sub.py:

 #! /usr/bin/python import sys from subprocess import check_output if len(sys.argv) > 1: print sys.argv else: print check_output((sys.argv[0], '-f"1234"')) 

entonces ejecútalo

 ./sub.py 

devuelve lo que dimos:

 ['./sub.py', '-f"1234"'] 

Así que supongo que check_output funciona bien, el problema puede deberse a cómo manejar el parámetro StampVer.exe, puede probar

 file_version_arg = '-f{0}'.format(version_number) 

Mi solución terminó siendo una especie de escapatoria. A pesar de que la documentación de StampVer muestra el formato anterior para el número de versión en todos los ejemplos, resulta que puede simplemente dejar las comillas todas juntas e incluso separarlas del interruptor -f y aún será aceptada.

Voy a llamar a esto mi respuesta, pero sigo pensando que ser capaz de pasar citas a través del subproceso es un problema que vale la pena resolver. Si alguien tiene una respuesta que realmente resuelva el problema inicial, por favor, publíquela y la marcaré en su lugar.