【问题标题】:PyCharm warns about string and bytes concatenation, but everything is stringPyCharm 警告字符串和字节连接,但一切都是字符串
【发布时间】:2020-06-15 14:36:29
【问题描述】:

PyCharm 警告我:

days = os.listdir(os.path.join(os.path.dirname(__file__), src))
day = days[0]
mystring = day.split('.')[0] + ';' + str(entering)

预期类型为 'bytes',改为 'str'

但对我来说一切似乎都是 str .. 无论如何,它有效,但这些警告让我怀疑。有什么提示吗?

编辑 添加更多详细信息:Pycharm 是 Linux 中的 2019.3.3 版本。输入的是int,src是来自的路径:

p = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description="")
p.add_argument('-src', dest='source', action='store', default='results', help='source path')

args = p.parse_args()
src = args.source

【问题讨论】:

  • srcentering 是什么?
  • @hiroprotagonist 用字符串文字替换 srcstr(entering) 重现了这一点
  • 似乎是 pycharm 中的“误报”错误之一
  • @DeepSpace 哦,是的,能够重现。错误在最后一行(...这可能是添加到问题中的有用信息)。
  • 无法在 Linux 上的 pycharm community 2019.3.2 中重现

标签: python string pycharm concatenation


【解决方案1】:

如果您查看os.listdir定义1,您可以阅读部分:

如果路径是字节类型(直接或间接通过 PathLike 接口),则返回的文件名也将是字节类型;在所有其他情况下,它们都是 str 类型。

我认为这是os.path.join 的间接原因,因为它返回实现PathLike 接口的对象。我认为 PyCharm 假设 os.path.join 会以某种方式返回字节。最简单的方法就是使用str(os.path.join(os.path.dirname(__file__), src)) 转换为str 的路径(虽然它已经是一个str

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多