首页 > 解决方案 > 从以前的执行中清除 txt 文件的内容

问题描述

我有一个程序可以执行计算并在 python 控制台中显示它们,查看一些文档,我已经能够将控制台的结果存储到 txt 文件中。

我现在要找的是每次重新运行时都会清理txt文件,这样控制台之前的结果就不会累积在txt中了。

from loggerPrint import Logger

print_console = Logger('out_of_console.txt') 

print('This is an example:')
print('Element',5*' ', 'Value')

values = [1,2,3,4,5,6,7,8,9,10]

for i in values:
    print(i,11*' ', values[5])

print_console.close()

班上

import sys, os

class Logger(object):
    """
    Lumberjack class - duplicates sys.stdout to a log file and it's okay
    source: https://stackoverflow.com/a/24583265/5820024
    """
    def __init__(self, filename="Prints_k", mode="ab", buff=0):
        self.stdout = sys.stdout
        self.file = open(filename, mode, buff)
        sys.stdout = self
    
    def __del__(self):
        self.close()
    
    def __enter__(self):
        pass
    
    def __exit__(self, *args):
        pass
    
    def write(self, message):
        self.stdout.write(message)
        self.file.write(message.encode("utf-8"))
    
    def flush(self):
        self.stdout.flush()
        self.file.flush()
        os.fsync(self.file.fileno())
    
    def close(self):
        if self.stdout != None:
            sys.stdout = self.stdout
            self.stdout = None
    
        if self.file != None:
            self.file.close()
            self.file = None

在搜索时,我找到了类'Logger',在我的情况下,如果在 write 方法中变量定义如下:self.file.write (message.encode ("utf-8")),我留下一点以下链接中的更多文档:程序完成后如何将控制台打印到文本文件(Python)?

如果有人有处理课程的经验并且理解得更好,我将不胜感激,您可以包含一个名为clear的新方法,或者以其他方式进行。

最好的祝福。

标签: pythonpython-3.xsavetext-files

解决方案


类中的__init__方法以模式Logger打开文件'ab'
a= 追加
b= 二进制

如果您想始终写入新文件而不保留旧内容,请以'wb'模式打开文件。

def __init__(self, filename="Prints_k", mode="wb", buff=0):

https://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files


推荐阅读