python中把输出结果写到一个文件中_如何将脚本输出写入文件和命令行?

你看不到任何东西的事实可能与缓冲正在发生的事实有关。所以你只能得到每4千分左右的文本输出。

相反,试试这样的方法:class OutputSplitter(object):

def __init__(self, real_output, *open_files):

self.__stdout = real_output

self.__fds = open_files

self.encoding = real_output.encoding

def write(self, string):

self.__stdout.write(string) # don't catch exception on that one.

self.__stdout.flush()

for fd in self.__fds:

try:

fd.write(string)

fd.flush()

except IOError:

pass # do what you want here.

def flush(self):

pass # already flushed

然后用该类装饰sys.stdout,并使用如下代码:stdout_saved = sys.stdout

logfile = open("log.txt","a") # check exception on that one.

sys.stdout = OutputSplitter(stdout_saved, logfile)

这样,每个输出(包括print)都会刷新到标准输出和指定文件。可能需要调整,因为我还没有测试这个实现。

当然,在打印消息时会看到(大多数情况下很小的)性能损失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值