Есть ли какая-нибудь подсказка о правильном типе файла или файлового объекта в Python? Например, как мне набрать возвращаемое значение этой функции?
def foo():
return open('bar')
Есть ли какая-нибудь подсказка о правильном типе файла или файлового объекта в Python? Например, как мне набрать возвращаемое значение этой функции?
def foo():
return open('bar')
Ответы:
Используйте типы typing.TextIOили typing.BinaryIOдля файлов, открытых в текстовом или двоичном режиме соответственно.
Из документов :
класс
typing.IOПространство имен оболочки для типов потоков ввода-вывода.
Это определяет общий тип
IO[AnyStr]и псевдонимыTextIOиBinaryIOсоответственно дляIO[str]иIO[bytes]. Они представляют типы потоков ввода-вывода, такие как возвращаемыеopen().
def f() -> IO: return open('test')дает «Ожидаемый тип 'IO', вместо этого получил 'TextIOWrapper [str]'» в PyCharm.
IO[str]?
Краткий ответ:
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