RedirectStd.py
上传用户:lswyart
上传日期:2008-06-12
资源大小:3441k
文件大小:3k
源码类别:

杀毒

开发平台:

Visual C++

  1. #-----------------------------------------------------------------------------
  2. # Name:        RedirectStd.py
  3. # Product:     ClamWin Free Antivirus
  4. #
  5. # Author:      alch [alch at users dot sourceforge dot net]
  6. #
  7. # Created:     2004/22/03
  8. # Copyright:   Copyright alch (c) 2004
  9. # Licence:     
  10. #   This program is free software; you can redistribute it and/or modify
  11. #   it under the terms of the GNU General Public License as published by
  12. #   the Free Software Foundation; either version 2 of the License, or
  13. #   (at your option) any later version.
  14. #   This program is distributed in the hope that it will be useful,
  15. #   but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. #   GNU General Public License for more details.
  18. #   You should have received a copy of the GNU General Public License
  19. #   along with this program; if not, write to the Free Software
  20. #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21. #-----------------------------------------------------------------------------
  22. import sys, os
  23. if sys.platform.startswith("win"):    
  24.     # fix the path env setting so that dlls are loaded from our lib folder
  25.     # rather than from system32, thsi way we eliminate python version conflicts
  26.     if hasattr(sys, "frozen"):
  27.         sys.path.insert(0,sys.prefix)
  28.     # If we are not running in a console, redirect all print statements to the
  29.     # win32traceutil collector.
  30.     # You can view output either from Pythonwin's "Tools->Trace Collector Debugging Tool",
  31.     # or simply run "win32traceutil.py" from a command prompt.
  32.     import win32api
  33.     try:
  34.         win32api.GetConsoleTitle()
  35.     except win32api.error:
  36.         # No console - if we are running from Python sources,
  37.         # redirect to win32traceutil, but if running from a binary
  38.         # install, redirect to a log file.
  39.         if hasattr(sys, "frozen"):
  40.             temp_dir = win32api.GetTempPath()
  41.             for i in range(3,0,-1):
  42.                 try: os.unlink(os.path.join(temp_dir, "ClamWin%d.log" % (i+1)))
  43.                 except os.error: pass
  44.                 try:
  45.                     os.rename(
  46.                         os.path.join(temp_dir, "ClamWin%d.log" % i),
  47.                         os.path.join(temp_dir, "ClamWin%d.log" % (i+1))
  48.                         )
  49.                 except os.error: pass
  50.             # Open this log, as unbuffered so crashes still get written.
  51.             sys.stdout = file(os.path.join(temp_dir,"ClamWin1.log"), "wt", 0)
  52.             sys.stderr = sys.stdout
  53.         else:
  54.             import win32traceutil
  55. else:
  56.     pass
  57.