【问题标题】:Pycharm expected type 'optional[bytes]' got 'str' insteadPycharm 预期类型 'optional[bytes]' 得到了 'str'
【发布时间】:2017-01-19 17:44:47
【问题描述】:

我正在使用rsplit 来拆分路径名,

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

但是 Pycharm 会发出警告,

预期类型为optional [bytes],改为str

python doc 中,它声明使用sep 作为分隔符字符串

那么如何解决这个问题?

【问题讨论】:

    标签: python python-3.x split pycharm


    【解决方案1】:

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

    一般来说,PyCharm 和错误本质上警告您的是参数必须是 Nonebytes。这就是 Optional 的意思,Optional[type]Nonetype,在你的情况下是 bytes

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

    b'hello/world'.rsplit('/') # error bytes-like object required
    

    相反,您需要提供byte 分隔符:

    b'hello/world'.rsplit(b'/') 
    

    None 以使其正常工作。

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

    【讨论】:

      【解决方案2】:

      我带着同样的问题来到这里并找到了一个略有不同的解决方案 - 考虑为将来可能遇到相同问题的任何人添加它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-21
        • 2019-03-07
        • 2021-10-14
        • 2014-07-20
        • 1970-01-01
        • 2022-12-17
        • 2021-05-08
        相关资源
        最近更新 更多