【问题标题】:PyCharm - Expected type 'Optional[IO[str]]', got 'TextIOWrapper[str]' insteadPyCharm - 预期类型'Optional [IO [str]]',改为'TextIOWrapper [str]'
【发布时间】:2017-04-07 17:48:27
【问题描述】:

将 PyCharm 更新到 2017.1 后,在一切看似简单正确的地方开始弹出新的检查警告。如下所示:

看起来 open() 没有返回 file 参数的预期类型,但代码非常简单,最重要的是,它可以按预期工作(使用 Python 3.5.2)。

Python docs 提到了一种使用StringIO 的方法,它确实消除了警告,但是它是为print 指定输出流的正确pythonic 方法吗?如果是这样,为什么?遵守此警告重要吗?

【问题讨论】:

  • 这是一个已知问题link

标签: python


【解决方案1】:

我找到的唯一解决方案是正确输入提示 PyCharm:

from typing import IO

with open('output_filename', 'w') as f:  # type: IO[str]
    print('some text to go to the file...', file=f)

这让 PyC​​harm 很开心,并且不会以任何方式妨碍代码的正确运行。

【讨论】:

  • type: IO[str] 不是更有意义吗?仍然使 PyCharm 警告静音。
  • open返回的类型不是文件吗?最好禁用 python 类型检查并在代码中添加注释,并带有指向 youtrack 的链接:# noinspection PyTypeChecker # pycharm 抱怨 f 不是文件类型,但这是一个已知错误:#youtrack.jetbrains.com/issue/PY-23288
猜你喜欢
  • 2017-01-19
  • 2014-07-20
  • 2021-11-07
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 2019-01-14
  • 2021-10-17
  • 1970-01-01
相关资源
最近更新 更多