Python'da bir dosya veya dosya benzeri nesne için kullanılacak herhangi bir doğru tür ipucu var mı? Örneğin, bu işlevin dönüş değerini nasıl yazabilirim?
def foo():
return open('bar')
Python'da bir dosya veya dosya benzeri nesne için kullanılacak herhangi bir doğru tür ipucu var mı? Örneğin, bu işlevin dönüş değerini nasıl yazabilirim?
def foo():
return open('bar')
Yanıtlar:
Metin modunda veya ikili modda açılan dosyalar için sırasıyla typing.TextIOveya typing.BinaryIOtürlerini kullanın .
Gönderen docs :
sınıf
typing.IOG / Ç akış türleri için sarmalayıcı ad alanı.
Bu, genel türü
IO[AnyStr]ve takma adlarıTextIOveBinaryIOsırasıylaIO[str]ve için tanımlarIO[bytes]. Bunlar, döndürülen gibi G / Ç akışlarının türlerini temsil ederopen().
def f() -> IO: return open('test')PyCharm'da "Beklenen tür 'IO' veriyor, bunun yerine 'TextIOWrapper [str]' var".
IO[str]?
Kısa cevap:
from typing import TextIOsadece değil from typing import *.IONe tür olduğunu belirtmeden bir dosyayı ifade etmek için kullanınTextIOveya kullanınBinaryIOÖrnek olarak:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
(PyCharm'da) bir denetim hatası veriyor Expected type 'BinaryIO', got 'TextIO' instead