【问题标题】:How to redirect error message while killing an application using Python code?如何在使用 Python 代码终止应用程序时重定向错误消息?
【发布时间】:2015-03-11 06:04:17
【问题描述】:

我正在通过批处理文件运行 python 脚本。在 python 代码中,我基本上是在继续新的测试运行之前关闭已经在计算机上运行的不同应用程序。我需要解析没有应用程序打开的输出日志,然后才继续。为了捕获命令提示符,我将输出重定向如下:

 python C:\controlpc_clean.py > output.log 2 > C:\cleanup.txt"

内部控制pc_clean.py:

os.system("TASKKILL /F /IM xt-ocd.exe") 

运行脚本后,我发现 SUCCESS 消息被写入 cleanup.txt:

"SUCCESS: The process "xt-ocd.exe" with PID 3052 has been terminated."

但是,如果 xt-ocd 应用程序已经关闭,则错误消息会出现在命令提示符中,但不会写入 cleanup.txt:

"ERROR: The process "xt-ocd.exe" not found." \\Only gets displayed in command prompt

任何建议如何将错误消息重定向到(最好)相同的文本文件?

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    使用 subprocess.popen。 它可以定义你的 cmd 的标准输入/标准输出/标准错误。 希望对你有帮助

    【讨论】:

      【解决方案2】:

      感谢阿莫。这是捕获 stderr 和 stdout 的代码:

      try:
      
        ocdclose_command =  "TASKKILL /F /IM xt-ocd.exe"
        process = subprocess.Popen(ocdclose_command, stdout = subprocess.PIPE,stderr = subprocess.PIPE)
      
      
        for line in process.stdout:
          print ' '
          sys.stdout.write(line)
          logfile.write(line)
      
        for line in process.stderr:
          print ' '
          sys.stderr.write(line)
          logfile.write(line)
      
        process.wait()
      
      except OSError:
         print "********COULD NOT FIND TASKKILL.EXE, PLEASE REINSTALL AND SET THE PATH VARIABLE PROPERLY********\n"
      
      time.sleep(2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 2012-01-13
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 2012-10-30
        • 2016-09-16
        相关资源
        最近更新 更多