从以前的执行中清除 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 的新方法,或者这样做换个方式。
此致。
Logger
class中的__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")
为了在写入文件之前清除文件。
我有一个程序可以执行计算并在 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 的新方法,或者这样做换个方式。
此致。
Logger
class中的__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")
为了在写入文件之前清除文件。