【发布时间】:2011-10-29 14:45:00
【问题描述】:
我有一个使用子进程的 python 脚本:
import subprocess
print "Running stuff"
subprocess.check_call(["do_stuff.bat"])
print "Stuff run"
如果它被命名为 blah.py,并且我运行(从命令提示符):
python blah.py
我将从 do_stuff.bat(或我运行的任何东西)获取输出。
如果运行如下:
blah.py
然后我没有从 do_stuff.bat 得到输出,只有打印语句。
目前在 windows Server 2003 上看到过。Python 版本 2.5.2(由于各种原因卡在那里)。 查看我看到的关联文件类型操作:
Python.File="C:\Python25\python.exe" "%1" %*
那么谁能解释一下区别?
【问题讨论】:
-
我会冒险猜测并说显式调用 python 使终端标准输出,而只是在其他地方调用文件管道标准输出。我无法证实这种预感。
-
在运行 Python 2.6.6 的 windows 7 64 位上,在单独调用 blah.py 后,批处理的输出会打印到屏幕上。
-
在我运行 Python 2.6.6 的 windows 7 32 位上无法重现。
-
如果在子进程调用中显式分配 stdout 给 sys.stdout 会发生什么?
-
在打印 sys.path 的 python 文件顶部添加一行。我想知道直接调用 python 解释器是否会导致与单独调用文件不同的路径。
标签: python windows subprocess