2011-08-18 9 views
13

Tengo un script en Python que utiliza el subproceso:de Windows - corriendo .py directamente vs blah.py pitón ejecución comporta de manera diferente

import subprocess 
print "Running stuff" 
subprocess.check_call(["do_stuff.bat"]) 
print "Stuff run" 

Si esto fue nombrado blah.py, y corro (desde una línea de comandos) :

python blah.py 

Obtendré la salida de do_stuff.bat (o lo que sea que ejecute).

Si esto se ejecuta como:

blah.py 

Entonces no tengo salida de do_stuff.bat, sólo las declaraciones de impresión.

Visto hasta ahora en Windows Server 2003. Python versión 2.5.2 (atrapado allí por varias razones). En cuanto a la acción tipo de archivo asociado veo:

Python.File = "C: \ Python25 \ python.exe" "% 1" % *

Así puede alguien explicar la diferencia?

+1

Me gustaría aventurar una respuesta y decir que pitón hace una llamada explícita a la norma terminal de salida, mientras que acaba de llamar el archivo tuberías estándar en otro lugar. No puedo confirmar esta corazonada, aunque. – Exelian

+0

En una Windows 7 de 64 bits ejecutando Python 2.6.6 salida de un lote se imprime en una pantalla después de llamar a blah.py por sí mismo. – Helbreder

+0

En mi Windows 7 de 32 bits ejecutando Python 2.6.6 no puedo reproducirlo. –

Respuesta

1

Tuve un problema común al usar subprocesos, pero todo mi código estaba en python. Los hilos no pueden escribir en la salida estándar usando impresión. Solo el hilo principal podría hacer eso. Solía ​​somethnig como esto

import sys 
sys.stdout.write("this was printed by thread") 

Sé que probablemente no lo puedo ayudarle con bat ...

+0

Esto es interesante y probablemente influye en la forma en que funciona el subproceso: no resolverá el problema, pero está relacionado. –

+2

* Los hilos no pueden escribir en la salida estándar usando impresión * ¿Por qué piensas eso? –

Cuestiones relacionadas