zoukankan      html  css  js  c++  java
  • python将控制台输出保存到文件

    python将控制台输出保存到文件

     

    在平时工作中,有时我们需要将控制台输出保存到文件

    1.命令行用>覆盖写入和>>追加写入

    for i in range(10000):
        print(i)
    复制代码
    #将控制台输出覆盖写入到文件

    python myprint.py > myprint.txt

    #将控制台输出追加写入到文件

    python myprint.py >> myprint.txt
    复制代码

    2.将sys.stdout输出到文件

    复制代码
    import sys
    import time
    f=open("myprint.txt","w+")
    sys.stdout=f
    for i in range(1000):
        print(i*9)
    复制代码

    缺点:只能保存到文件,但控制台无输出

    3.利用print函数中的file参数

    复制代码
    import sys
    import time
    f=open("myprint.txt","w+")
    for i in range(100):
        print("--{}--".format(i**2),file=f,flush=True)
        print("--{}--".format(i ** 2),file=sys.stdout)
        time.sleep(0.5)
    复制代码

    将控制台输出的同时即时保存到文件

    print函数中的file参数,file=f,输出到文件;file=sys.stdout,输出到终端;flush=True,即时刷新

    4.用类实现

    复制代码
    import sys
    class Logger(object):
        def __init__(self, filename='default.log', stream=sys.stdout):
            self.terminal = stream
            self.log = open(filename, 'a')
    
        def write(self, message):
            self.terminal.write(message)
            self.log.write(message)
    
        def flush(self):
            pass
    
    sys.stdout = Logger(stream=sys.stdout)
    
    # now it works
    print('print something')
    print("output")
    复制代码
  • 相关阅读:
    spring查看生成的cglib代理类源码详解
    java-jdk动态代理生成的代理类源码
    约瑟夫斯问题-java版数组解法和链表解法
    HashMap源码解析(简单易懂)
    windows云服务器发布项目
    java学习
    TTL macro登陆linux服务器
    c#笔记
    C#笔记
    git merge
  • 原文地址:https://www.cnblogs.com/xuanbjut/p/14341070.html
Copyright © 2011-2022 走看看