zoukankan      html  css  js  c++  java
  • python重定向

    1.重定向到文件

    import sys
    sys.stdout = open("log.txt", "write")

        “任何提供file-like write方法的对象都可以被赋给sys.stdout方法从而使得标准输出输送到该对象的write方法.”。

        这种说法网上到处都是,但很少找到这样自定义的file-like write实现。前一阵子尝试了半天,总是不尽人意。因为我在做python扩展,想把python输出重定向到debugView,虽然写了个file-like write类,可结果总是让人不爽,输出了多余的换行符。今天突然来了灵感,发现了原因。


    2.重定向到自定义的file-like write对象。

    例:

    import sys
    import Lazy
    
    g_oldStdout = sys.stdout
    g_oldStderr = sys.stderr
    
    class Redirect(object):
    	def __init__(self):
    		self.cache = ""
    		self.out = Lazy.debug
    		
    	def init(self) :
    		sys.stdout = self
    		sys.stderr = self
    		
    	def write(self, s):
    		if s == "
    " :
    			self.out(self.cache)
    			self.cache = ""
    		else :
    			self.cache += s
    	
    	def release(self):
    		global g_oldStdout, g_oldStderr
    		sys.stdout = g_oldStdout
    		sys.stderr = g_oldStderr
    		
    
    g_redirect = Redirect()

    Lazy.debug是我封装了WindowsAPI的OutputDebugMsg函数。早期,我将write方法的内部实现直接用OutputDebugMsg输出,所以结果很悲催!!!

    由于print 1, 2, 3, 4, 5并不是直接将调用stdout.write("12345")输出,而是write("1"),write("2"),write("3")...write(" ")的方式。




  • 相关阅读:
    paste 合并文件
    split 分割文件
    cut 从文本中提取一段文字并输出
    tailf 跟踪日志文件
    tail 显示文件内容尾部
    给Linux系统新增加一块硬盘
    Centos7+httpd+fastcgi安装提示错误
    Redhat 7使用CentOS 7的Yum网络源
    windows7下cmd窗口使用ssh命令
    PHP set_error_handler() 函数
  • 原文地址:https://www.cnblogs.com/ygxsk/p/7694009.html
Copyright © 2011-2022 走看看