python - TypeError:预期的字符串或类似字节的对象,适用于服务器但不适用于 PC
问题描述
介绍
我对用 python 3.4.2 编写的 python 程序有问题。一开始我想说,这不是我的程序。
当我通过 SSH 连接服务器并编译它时,它工作得很好。
服务器和PC规格
...在我的电脑上:
我有不同的 Python 版本,但我无法在 3.4.2 编译它,因为我需要的这个特定版本没有打字模块。我不知道GCC 版本是否会导致这个问题,但我尝试了不同的版本。
我已经下载了它,并尝试自己编译它。我以完全相同的方式运行它。
真正的问题
Traceback (most recent call last):
File "gads.py", line 28, in <module>
lists = list_working.ListWorking(files_data)
File "/home/grzesiek/googleads/lib/list_working.py", line 43, in __init__
self._acc = self._split_str_list(list_data['accepted']['content'])
File "/home/grzesiek/googleads/lib/common.py", line 69, in _split_str_list
splited = re.split(separator, content)
File "/usr/local/lib/python3.5/re.py", line 203, in split
return _compile(pattern, flags).split(string, maxsplit)
TypeError: expected string or bytes-like object
到目前为止,我知道ListWorking(files_data)传递了一些字典文件,最后当我想使用正则表达式时它会引发错误。但我不能将这些字典更改为字符串或列表,因为它会编译,但会删除我提供给ListWorking()
的数据
这是我尝试更改的代码片段:
def __init__(self, list_data: dict) -> None:
self._acc = self._split_str_list(list_data['accepted']['content'])
self._acc = self._del_dup(self._acc)
self._ign = self._split_str_list(list_data['ignored']['content'])
self._ign = self._del_dup(self._ign)
self._pro = self._split_str_list(list_data['protected']['content'])
self._pro = self._del_dup(self._pro)
self._fign = self._split_str_list(list_data['full_ignored']['content'])
self._fign = self._del_dup(self._fign)
self._key = self._split_str_list(list_data['keywords']['content'])
self._key = self._del_dup(self._key)
self._unk = self._split_str_list(list_data['unknown']['content'])
self._unk = self._del_dup(self._unk)
self._sw = self._split_str_list(list_data['stopwords']['content'])
最后一个错误发生的地方:
def _split_str_list(content: str, separator: str = '\n') -> list:
"""Split string to list"""
splited = re.split(separator, content)
splited = list(x.strip() for x in splited)
splited = list(filter(None, splited))
return splited
此外,在 Python 3.4.2 中,它会出现import typing
并抛出错误,因为在这个版本的 Python 中没有输入库。
那么 - 怎么可能在 Linux 服务器上正常工作,但在我的 PC 上却不行?
解决方案
好吧,答案比我想象的要简单得多......我只需要安装正确版本的enca,如果缺少某些东西,代码作者没有写具体信息,所以很难找到,因为整个项目有大约 5000 行代码,而 enca 仅由一个函数使用。
它与 Linux 或 GCC 无关。
推荐阅读
- android - RecyclerView 将 Alpha 设置为所选项目
- php - Symfony 4:验证器正在刷新而不是显示消息
- elasticsearch - 每天与前一天的计数的 Delta (Difference)
- c - 结构分配大小中断 spi_sync_transfer
- flutter - 如果我使用过多的“const”关键字,会有什么不同吗?
- scala - 如何在 scala 中启用后缀运算符?
- ios - Xcode 11 beta 5 / iOS 13 Public Beta 7 Combine 在设备上崩溃但在模拟器中运行
- c# - android的触摸控件没有检测到我的X位置
- powershell - 尝试查找具有相同命名文件的文件夹
- css - 是否有相当于css中的“初始宽度”的东西