【发布时间】:2023-01-22 11:34:48
【问题描述】:
一种类型如何提示 csv.reader() 返回的 csv 阅读器? 当我在 python 中检查结果的类型时,我看到:
>>> import csv
>>> with open('upt.csv', newline='') as csvfile:
... reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...
>>> reader
<_csv.reader object at 0x10c5292e0>
>>> type(reader)
<class '_csv.reader'>
>>> reader.__class__
<class '_csv.reader'>
>>> import _csv
>>> _csv.reader
<built-in function reader>
>>> _csv.reader.__class__
<class 'builtin_function_or_method'>
因此它将阅读器的类类型描述为 _csv.reader 但是当我导入不是类的 _csv.reader 时它是一个函数。如何为 csv.reader 类实例创建类型提示?
文档:https://docs.python.org/3/library/csv.html?highlight=csv#csv.reader 不要使用类来描述返回类型。
奇怪的是,我确实在 _csv.reader 上看到了像 __init__ 和 __new__ 这样的类方法,所以这可能是一个 c/c 绑定问题?
>>> dir(_csv.reader) ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
笔记: DictReader 没有这个问题:
>>> with open('upt.csv', newline='') as csvfile:
... dreader = csv.DictReader(csvfile)
...
>>> dreader
<csv.DictReader object at 0x10c410a30>
>>> csv.DictReader
<class 'csv.DictReader'>
【问题讨论】:
标签: python-3.x csv file