工作,我希望能够在我使用Windows上运行下面的脚本来获得输出和错误的内容pythonw.exe:子过程POPEN不pythonw.exe
import subprocess
import sys
import os
import string
import time
tmpdir = 'c:/temp'
cmd = 'dir c:'
tmpfile = "tmp_%f" % (time.time())
tmpfile = os.path.normpath(os.path.join(tmpdir,tmpfile))
tmpfile2 = tmpfile+".bat"
tmpfile3 = tmpfile+".txt"
fa = open(tmpfile2,'w')
fa.write("@ECHO OFF > NUL\n")
fa.write('call '+cmd+"\n")
fa.close()
wcmd = []
wcmd.append(tmpfile2)
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
fb = open(tmpfile3,'w')
fb.write("\n")
fb.write(tmpfile2+"\n")
try:
procval = subprocess.Popen(wcmd, startupinfo=startupinfo, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()
fb.write(str(procval)+"\n")
fb.write("Sucess")
fb.close()
except:
fb.write(str(procval)+"\n")
fb.write("Failure")
fb.close()
当我使用python它执行.exe我得到预期的输出。当我运行它使用pythonw.exe 我最终在异常方面。如果我只用命令和startupinfo标志运行popen命令将成功完成,但不能访问子进程中的数据。我读过的所有内容都表明这应该起作用,但必须缺少一些东西。任何帮助将不胜感激。
感谢, 兰迪
您是否碰巧记录异常信息? – jdi 2012-04-24 06:04:15
我已经尝试过但并不成功。这很容易复制,所以关于如何获得异常信息的任何想法,并会给它一个 – user1352650 2012-04-25 02:22:44
我不明白。你的代码碰到了一个通用的块,但你不能告诉我们这个异常?将其更改为:“除异常,e”并记录e。或者只是在最后提高,所以你可以看到错误是什么 – jdi 2012-04-25 14:31:37