Python类型提示:如何将文件指针指定为参数?

时间:2016-11-15 20:50:31

标签: python-3.x types

我正在编写一个函数,它将文件指针作为参数并写入它。我想为该参数添加一个类型提示:

def write_some_stuff(fp: _io.TextIOWrapper):
    ...

_io.TextIOWrappertype(open(...))给我的。

我还应该使用其他什么吗?

2 个答案:

答案 0 :(得分:2)

如果您想要更通用一些并允许任何处于文本模式的文件对象(即angleBetweenLightAndNormal返回Unicode字符串),您可能希望提示您采用read()参数。除了更常见的io.TextIOBase实例之外,这将允许io.StringIO的实例。

即使您坚持io.TextIOWrapper,您也不需要io模块名称的下划线。常规TextIOWrapper模块将所有相关类型从io模块导入其自己的命名空间。

答案 1 :(得分:1)

您应使用Python 3.5中引入的typing模块: typing.TextIO最适合这种情况。

  

通用类型IO[AnyStr]及其子类TextIO(IO[str])BinaryIO(IO[bytes])代表I / O流的类型,例如open()返回的I / O流。

在您的示例中:

from typing import TextIO

def write_some_stuff(fp: TextIO):
    ...