问题:为文件或类似文件的对象键入提示?
是否有任何正确的类型提示可用于Python中的文件或类似文件的对象?例如,如何键入此函数的返回值?
def foo():
return open('bar')
回答 0
对于分别以文本模式或二进制模式打开的文件,请使用typing.TextIO
或typing.BinaryIO
类型。
从文档:
类
typing.IO
I / O流类型的包装器命名空间。
这定义了通用类型
IO[AnyStr]
和别名TextIO
和BinaryIO
用于分别IO[str]
和IO[bytes]
。这些代表I / O流的类型,例如由返回open()
。
回答 1
简短的答案:
- 您需要明确。那
from typing import TextIO
不只是from typing import *
。 - 使用
IO
意味着文件没有指定什么样的 - 使用
TextIO
或BinaryIO
如果您知道类型 - 您目前无法指定将其打开以进行写入或对其进行编码。
举个例子:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
给出(PyCharm)的检查错误 Expected type 'BinaryIO', got 'TextIO' instead