我在Python 3.6.5。
当使用日志记录我得到以下错误-
TypeError:需要一个类似字节的对象,而不是'str'
它在Python2中运行良好。我还尝试将字符串转换为Byte对象,但无法解决问题
if __name__ == '__main__':
config_file = '/source/account_content_recommendation/config/sales_central_config.json'
try:
### Read all the parameters -
params = json.loads(hdfs.read_file(config_file))
### Create the logging csv file -
hdfs_log_path = params["hdfs_log_path"]
hdfs.create_file(hdfs_log_path, "starting ... ", overwrite = True)
log_name = 'Account_Content_Matching'
global stream
log = logging.getLogger('Acct_Cont_Log')
stream = BytesIO()
handler = logging.StreamHandler(stream)
log.setLevel(logging.DEBUG)
for handle in log.handlers:
log.removeHandler(handle)
log.addHandler(handler)
#env = sys.argv[1]
env = 'dev'
formatter = logging.Formatter('{0}| %(asctime)s| {1}| %(module)s| %(funcName)s| %(lineno)d| %(levelname)s| %(message)r'.format(log_name, env))
handler.setFormatter(formatter)
log.info("starting execution of Account_Content_Matching load")
#log.info("sys args %s"%(str(sys.argv)))
def flush_log():
global stream
msg = stream.getvalue()
hdfs.append_file(hdfs_log_path, msg)
stream.seek(0)
stream.truncate(0)
print(msg)
sys.stdout.flush
except Exception as error:
raise error
我得到以下错误-
Traceback(最近一次调用): File"/home/ec2-user/anaconda3/envs/tensorflow_p36/lib/python3.6/log/init.py",第994行,在emitstream.write(msg)TypeError:一个字节样的对象是必需的,而不是'str'
还...
消息:“正在开始执行帐户内容匹配加载”参数:()I1001 06:29:35.870266 140241833649984:29]正在开始执行帐户内容匹配加载
在记录器设置中,您:
>
stream = StringIO()
将所有字符串转换为字节,然后将其传递给记录器方法(比前者更复杂,意义也更小):
log.info("starting execution of Account_Content_Matching load".encode()) # log.info(b"starting execution of Account_Content_Matching load") # For literals
log.debug(some_string_var.encode())
以下是尝试使用套接字修改用户提供的输入的代码: 当我执行它并提供输入时,会发生以下错误: 我能做些什么来解决这个问题?
我正在运行一个代码,但这一行出现错误: TypeError:需要一个类似字节的对象,而不是str 这里显示的是类型列表的各个部分,是 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/
我得到一个“TypeError:需要一个类似字节的对象,而不是'str'”。我在使用StringIO时遇到了一个错误“TypeError:initial_值必须是str或None,而不是bytes”,我在使用Python 3.7。 我也得到这个函数同样的错误。"返回pickle.load(打开(DATA_FILE))"
问题内容: 我最近已经迁移到Py 3.5。这段代码在Python 2.7中正常工作: 升级到3.5后,我得到了: 最后一行错误(模式搜索代码)。 我试过使用语句两侧的函数,也尝试过: -无济于事。 我能够很快解决几乎所有的问题,但是这个小小的声明困扰着我。 问题答案: 你以二进制模式打开文件: 这意味着从文件读取的所有数据都作为bytes对象而不是作为对象返回。然后,你不能在容纳测试中使用字符串:
我最近迁移到了Py3.5。这段代码在Python2.7中正常工作: 升级到3.5后,我得到了: 最后一行(模式搜索代码)出错。 我尝试在语句的两侧使用函数,也尝试了: -无济于事。 我能够很快解决几乎所有的2:3问题,但这个小小的声明困扰着我。