生成pyd报错UnicodeEncodeError: 'latin-1' codec can't encode characters in position 2748-2755:

开始的排错方向是字符编码方向,最后发现竟然是python写法导致,换一个写法就解决了。这是 'latin-1' codec can't encode characters in position 2748-2755这个错误最奇葩的一次处理经历。

问题截图

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 2748-2755: ordinal not in range(256)

问题介绍

最近在写完一个独立的python3模式之后,想打包在pyd,总是莫名其妙地报错。

  File "D:\miniconda3\envs\py37\lib\codecs.py", line 377, in write
    data, consumed = self.encode(object, self.errors)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 2748-2755: ordinal not in range(256)
不论问AI还是找资料,都给我从编码、汉字等方向查问题。

但最后我发现竟然是一个python代码写法问题


这个写法必然有打包Pyd报问题

video_inputs = ''.join([f'[v{i}]' for i in range(len(self.file_list))])
更换成以下则正常了
video_inputs = ''
        for i in range(len(self.file_list)):
            video_inputs += f'[v{i}]'
        filter_complex.append(f"{video_inputs}concat=n={len(self.file_list)}:v=1:a=0[v]")
类似的表达式中for类型的,基本上都触发了UnicodeEncodeError: 'latin-1' codec

希望给正在爬坑的朋友带来一点启发,也可能你的原因就是字符编码而不是这个,原因不是唯一的。


猜你喜欢

用20行Python代码实现实时获取鼠标屏幕坐标

用20行Python代码实现实时获取鼠标屏幕坐标

代码保存为一个py文件,比如xxx.py,再运行这个py文件。 鼠标就会出现一个浮窗跟随,实时显示当前鼠标坐标。 需要先pip install pyautogui import pyautogui ...

用python读取stable diffusion生成的png图片的参数信息

之前使用stable diffusion生成图片之后,如果要再看绘画参数,需要打开stable diffusion的webui来看图片的参数。 对于其它没安装环境的电脑颇为麻烦。 当然如果要脚本化保...