从以前的执行中清除 txt 文件的内容

Clean content of txt file from previous executions

我有一个程序可以执行计算并在 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()

class

import sys, os

class Logger(object):
    """
    Lumberjack class - duplicates sys.stdout to a log file and it's okay
    source: 
    """
    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

在搜索时,我发现 class 'Logger',在我的例子中,如果在 write 方法中变量定义如下:self.file.write (message.encode ("utf-8")),我在下面多留一点文档link:

如果有人有处理 classes 的经验并且理解得更好一点,我将不胜感激,你可以包括一个名为 clear 的新方法,或者这样做换个方式。

此致。

Loggerclass中的__init__方法以'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

干得好 class!你可以看到当你用

实例化它时
print_console = Logger('out_of_console.txt')

参数 mode 保持默认值 "ab"

参考:https://stackabuse.com/file-handling-in-python/ 这对应于以“附加字节”模式打开文件,在这种模式下,新输入会在您写入时添加到文件中。你需要写

print_console = Logger('out_of_console.txt',mode="wb")

为了在写入文件之前清除文件。