生成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 ...

解决linux rm和软件界面都无法删除的乱码文件名的文件

解决linux rm和软件界面都无法删除的乱码文件名的文件

有些看似乱码文件,加一对单引号就能删除。但有些真乱码文件,怎么也删除不掉,用sftp工具连接能看到也删除不掉。 rm: 无法删除"?q???d??": 没有那个文件或目录 这里有一个非常有效果的解决...