You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建上下文管理器阻止pywhatkit生成日志并实现多管理器with调用

解决方案

1. 阻止生成pywhatkit_dbs.txt日志的上下文管理器

思路是在执行目标函数前备份原有日志文件(如果存在),函数执行后删除新生成的日志、恢复原有文件内容,完全屏蔽本次调用产生的日志写入。对应类代码如下:

import os

class HiddenPyWhatKitLogs:
    def __enter__(self):
        self.log_file_name = "pywhatkit_dbs.txt"
        self.file_existed = os.path.exists(self.log_file_name)
        # 备份原有日志文件内容
        if self.file_existed:
            with open(self.log_file_name, "r", encoding="utf-8") as f:
                self.old_content = f.read()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        # 删除本次调用生成的日志文件
        if os.path.exists(self.log_file_name):
            os.remove(self.log_file_name)
        # 恢复进入上下文前的文件状态
        if self.file_existed:
            with open(self.log_file_name, "w", encoding="utf-8") as f:
                f.write(self.old_content)

2. 同时使用两个上下文管理器的方法

Python的with语句原生支持同时声明多个上下文管理器,直接用逗号分隔即可,不需要嵌套:

import sys
import os
import pywhatkit

# 保留你原来的HiddenPrints类
class HiddenPrints:
    def __enter__(self):
        self._original_stdout = sys.stdout
        sys.stdout = open(os.devnull, 'w')

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.stdout.close()
        sys.stdout = self._original_stdout

# 调用示例
with HiddenPrints(), HiddenPyWhatKitLogs():
    # 替换为你实际的调用参数
    pywhatkit.sendwhatmsg_instantly("+861xxxxxxxxx", "测试消息")

内容的提问来源于stack exchange,提问作者user2401856

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:24:06