Python 解决 AttributeError AttributeError: 'NoneType' object has no attribute 'write' 错误
in Python with 0 comment

使用docx2pdf 模块进行word转pdf的时候,用python.exe 带控制台可以运行,pythonw.exe 无控制台的时候报错 AttributeError AttributeError: 'NoneType' object has no attribute 'write'

原因:代码中存在向控制台写信息,pythonw.exe没有控制台,导致无法调用write方法。

解决方法

import os
import sys

# 重定向标准输出和标准错误
sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')

# 这里写需要屏蔽打印信息的代码
print("这个信息不会被打印出来")

# 恢复标准输出和标准错误
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__

print("这个信息会被打印出来")

来自ChatGPT

以上代码将标准输出和标准错误流重定向到 os.devnull,这相当于将所有打印信息丢弃。重定向的代码运行完成后,再恢复标准输出和标准错误流,这样后续的打印信息可以正常显示。

请注意,在重定向期间,所有的打印信息,包括异常信息都会被丢弃。如果需要在调试时查看这些信息,记得在适当时候恢复标准输出和标准错误流。

Responses