python - 从以前的执行中清除 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的新方法,或者以其他方式进行。
最好的祝福。
解决方案
类中的__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
推荐阅读
- reactjs - 未指定时如何在 React 组件中显式创建可选属性?
- javascript - 将 Class 应用程序转换为 React Next 应用程序的 Hooks
- docker - 用于环境版本控制的 Docker 映像存储库名称或标记
- django - 如何在 Django 中为 python 请求创建队列?
- eclipse - 使用 Eclipse Buildship 插件运行 gradle 构建任务时如何排除测试任务?
- c# - AdysTech/CredentialManager 删除凭据问题
- azure-functions - Azure 函数 - 获取 java.lang.IllegalStateException:与 cosmos 客户端连接时阻塞读取 120000 MILLISECONDS 时超时
- java - mongodb中如何设计文本的外观?
- android - 在 Android 29 上运行可执行文件的路径是什么?
- oauth-2.0 - LinkedIn OAuth:如何访问 LinkedIn 用户的位置和职位信息?