Python Pycharm预期类型';可选[字节]';得到';str';相反

Python Pycharm预期类型';可选[字节]';得到';str';相反,python,python-3.x,split,pycharm,Python,Python 3.x,Split,Pycharm,我正在使用rsplit拆分路径名 rootPath = os.path.abspath(__file__) rootPath = (rootPath.rsplit('/', 1)[0]).rsplit('/', 1)[0] 但是Pycharm警告说 应为类型可选[bytes],改为类型str 在python文档中,它使用sep作为分隔符字符串 那么如何解决这个问题呢?看起来rootPath被视为一个字节对象(可能是一个小错误?),或者警告是针对另一部分的 一般来说,PyCharm和错误本质上是

我正在使用
rsplit
拆分路径名

rootPath = os.path.abspath(__file__)
rootPath = (rootPath.rsplit('/', 1)[0]).rsplit('/', 1)[0]
但是Pycharm警告说

应为类型
可选[bytes]
,改为类型
str

python文档
中,它使用
sep
作为分隔符字符串


那么如何解决这个问题呢?

看起来
rootPath
被视为一个字节对象(可能是一个小错误?),或者警告是针对另一部分的

一般来说,PyCharm和错误本质上是在警告您参数必须是
None
bytes
。这就意味着,
可选的[type]
要么是
要么是
类型
,在您的例子中是
字节

在一个简单的Python REPL中,消息略有不同,但要点相同:

b'hello/world'.rsplit('/') # error bytes-like object required
相反,您需要提供一个
字节
分隔符:

b'hello/world'.rsplit(b'/') 
None
以使其工作


PyCharm中有一个小错误,它在这里错误地报告了
rsplit
,或者警告是针对您代码的另一部分。

我带着同样的问题来到这里,发现了一个稍微不同的解决方案-考虑为将来可能遇到相同问题的任何人添加它

rootPath = os.path.abspath(__file__)
rootPath = str(rootPath.rsplit('/', 1)[0]).rsplit('/', 1)[0]