我升级一个python 2.7代码到python 3.6,但每次我试图写一些控制台上使用日志记录我得到这个错误
TypeError:需要类似字节的对象,而不是“str”
我读过大多数与此类似的问题,但没有一个有效。
# mainTest.py module
from config import logger
log = logger.getLogger(__file__)
def function():
message = "testing"
log.info(message)
# code
# logger.py
import logging
import os
import classpathDir as cf
def getLogger(loggerForFile):
logger = logging.getLogger(os.path.basename(loggerForFile))
if not logger.handlers:
logging.basicConfig(format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%d/%m/%Y %I:%M:%S %p', filename=cf.ROOT_DIR + "/output/processing.log",
filemode='wb', level=logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
# set a format which is simpler for console use
formatter = logging.Formatter('%(asctime)s %(name)-12s: %(levelname)-8s %(message)s',
datefmt='%d/%m/%Y %I:%M:%S')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logger.addHandler(console)
return logger
if __name__ == '__main__':
print("Logging config module")
当我在python2.7上使用相同的代码时,我得到了以下输出:
22/05/2019 01:38:11 mainTest.py : INFO testing
在使用相同代码的python 3.6上,我遇到了以下错误:
22/05/2019 03:17:59 mainRF.py : INFO testing
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.6/logging/__init__.py", line 996, in emit
stream.write(msg)
TypeError: a bytes-like object is required, not 'str'
Call stack:
File "mainTest.py", line 126, in <module>
run_combinations()
File "mainTest.py", line 20, in run_combinations
log.info(message)
Message: 'testing'
Arguments: ()
设置日志基本配置时,我将pythonfilemode='wb'
更改为pythonfilemode='w'
,并且工作正常。
我从youtbe视频中编码了这个,他似乎做得很好,但当我尝试时,我在底部得到了错误消息,我很困惑,我需要帮助。 当我运行程序时,我得到错误: 我不知道这意味着什么也不知道怎么解决 这就是解决办法 你有两个问题。你的第一个是,你把引号周围,使它成为一个字符串而不是一个表面.你的第二个是,你把一个元组的第二个参数,而不是rect
我有windows 11 python 3.9,我运行一个py脚本来做一个启动器,我解决了一个问题,长重命名为int,但现在我不能确定发生了什么,错误是: TypeError:需要一个类似字节的对象,而不是str
我正在尝试遵循这个OpenCV练习http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html 但是在运行mergevec.py的步骤中遇到了困难(我使用Python版本而不是.cpp版本)。我使用的是Python3,而不是本文中提到的Python2.x。 此文件的源是https://github.com/
问题内容: 我一直在寻找一种从python脚本运行外部进程并在执行期间打印其stdout消息的方法。 下面的代码有效,但是在运行时不输出标准输出。退出时,出现以下错误: sys.stdout.write(nextline)TypeError:必须为str,而不是字节 我正在使用python 3.3.2 问题答案: Python 3处理字符串有些不同。最初,字符串只有一种类型:。上世纪90年代,当u
我有一个问题,我做了一个乒乓游戏,但我有一个问题,把分数打印到pyplay窗口。 我得到错误'TypeError:参数1必须是pygame.Surface,而不是str 我在文本中输入了blit,但出现了一个错误。我知道代码乱七八糟,我稍后会修复它