我使用rsplit来拆分路径名,
rsplit
rootPath = os.path.abspath(__file__) rootPath = (rootPath.rsplit('/', 1)[0]).rsplit('/', 1)[0]
但是Pycharm警告说应为类型optional [bytes],但得到了str在python doc中,它使用sep作为分隔符字符串 * 来表示 *。那么如何解决这个问题呢?
optional [bytes]
str
python doc
sep
2ic8powd1#
看起来rootPath被当作一个字节对象(可能是一个小错误?),或者警告是针对另一部分的。一般来说,PyCharm和error警告你的是参数必须是None或bytes,这就是Optional的意思,Optional[type]要么是None,要么是type,在你的例子中是bytes。在一个简单的Python REPL中,消息略有不同,但要点是相同的:
rootPath
None
bytes
Optional
Optional[type]
type
b'hello/world'.rsplit('/') # error bytes-like object required
相反,您需要提供一个byte分隔符:
byte
b'hello/world'.rsplit(b'/')
或者None来使其工作。可能是PyCharm中有一个小bug,它在这里错误地报告了rsplit,或者警告是针对代码的另一部分。
2izufjch2#
我带着同样的问题来到这里,发现了一个略有不同的解决方案-想到为任何可能在未来陷入同样问题的人添加它。
rootPath = os.path.abspath(__file__) rootPath = str(rootPath.rsplit('/', 1)[0]).rsplit('/', 1)[0]
juzqafwq3#
我之前看到这个:
import subprocess result = subprocess.run( "ls /etc/systemd/system", shell=True, capture_output=True, text=True ) for line in result.stdout.split("\n"): if "banana" in line: print(line.split(".")[0].strip().split("_"))
PyCharm开始高亮显示:“\n”、“香蕉”、.""、“_":
它说它需要Optional[bytes]或Union[bytes,int],然而这段代码在python 3.10、3.9和3.8中运行得非常好。我怀疑这是我最近选择的设置-〉编辑器-〉检查-〉代码兼容性检查,所以我禁用了它,并重新启动该窗口无济于事。我在.stdout后面添加了.decode()来转换字节。这会使PyCharm安静下来,但是会产生噪音。在python 3.10中,.stdout不是bytes,而是str,我会得到一个错误:属性错误:“str”对象没有属性“decode”。在python文档中,我发现了与str中相同的方法名(以字节为单位
Optional[bytes]
Union[bytes,int]
.stdout
.decode()
3条答案
按热度按时间2ic8powd1#
看起来
rootPath
被当作一个字节对象(可能是一个小错误?),或者警告是针对另一部分的。一般来说,PyCharm和error警告你的是参数必须是
None
或bytes
,这就是Optional
的意思,Optional[type]
要么是None
,要么是type
,在你的例子中是bytes
。在一个简单的Python REPL中,消息略有不同,但要点是相同的:
相反,您需要提供一个
byte
分隔符:或者
None
来使其工作。可能是PyCharm中有一个小bug,它在这里错误地报告了
rsplit
,或者警告是针对代码的另一部分。2izufjch2#
我带着同样的问题来到这里,发现了一个略有不同的解决方案-想到为任何可能在未来陷入同样问题的人添加它。
juzqafwq3#
我之前看到这个:
PyCharm开始高亮显示:“\n”、“香蕉”、.""、“_":
它说它需要
Optional[bytes]
或Union[bytes,int]
,然而这段代码在python 3.10、3.9和3.8中运行得非常好。我怀疑这是我最近选择的设置-〉编辑器-〉检查-〉代码兼容性检查,所以我禁用了它,并重新启动该窗口无济于事。
我在
.stdout
后面添加了.decode()
来转换字节。这会使PyCharm安静下来,但是会产生噪音。在python 3.10中,.stdout
不是bytes
,而是str
,我会得到一个错误:属性错误:“str”对象没有属性“decode”。
在python文档中,我发现了与str中相同的方法名(以字节为单位