python重定向_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 == "\n" :

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("\n")的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值