Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果在读取csv文件后搜索(0),则不会重置line_num属性。为什么会发生这种情况?_Python_Csv_Pointers - Fatal编程技术网

Python 如果在读取csv文件后搜索(0),则不会重置line_num属性。为什么会发生这种情况?

Python 如果在读取csv文件后搜索(0),则不会重置line_num属性。为什么会发生这种情况?,python,csv,pointers,Python,Csv,Pointers,我尝试了几种组合来读取csv文件,并注意到在读取后,当我seek(0)返回到起始位置时,它没有重置line_num属性。为什么会发生这种情况 >>> fileR <_csv.reader object at 0x0761ADF0> >>> for a in fileR: ... print('line#' + str(fileR.line_num) + ' ' + str(a)) ... line#4 ['1', '1', '1001']

我尝试了几种组合来读取csv文件,并注意到在读取后,当我
seek(0)
返回到起始位置时,它没有重置
line_num
属性。为什么会发生这种情况

>>> fileR
<_csv.reader object at 0x0761ADF0>
>>> for a in fileR:
...     print('line#' + str(fileR.line_num) + ' ' + str(a))
...
line#4 ['1', '1', '1001']
line#5 ['2', '2', '2002']
line#6 ['Day', 'Month', 'Year']
>>> file.seek(0)
0
>>> for a in fileR:
...     print('line#' + str(fileR.line_num) + ' ' + str(a))
...
line#7 ['1', '1', '1001']
line#8 ['2', '2', '2002']
line#9 ['Day', 'Month', 'Year']
>>文件管理器
>>>对于输入文件管理器:
...     打印('line#'+str(fileR.line_num)+''+str(a))
...
第4行['1','1','1001']
第5行['2','2','2002']
第6行[“日”、“月”、“年”]
>>>file.seek(0)
0
>>>对于输入文件管理器:
...     打印('line#'+str(fileR.line_num)+''+str(a))
...
第7行['1','1','1001']
第8行['2','2','2002']
第9行[“日”、“月”、“年”]
是:

从源迭代器读取的行数

这与文件指针的位置不同
line_num
是在
C
代码中设置的,不能直接从Python代码中更改。中没有任何信息解释如果重置文件指针,为什么不重置
行\u num

如果您想跟踪每次迭代的行号,可以使用内置函数,或者实现自己的计数器

>对于枚举中的i,a(文件管理器):
...     打印('line#',i,str(a))

如果您使用
csv.reader
一个要处理的文件,它将负责读取该文件。如果您在文件级别后台执行
seek()
,则无法检测您是否执行了该操作。您必须选择(1)让
csv.reader
负责读取物理文件,或(2)自己对文件进行低级控制并分离数据。好的,这很有趣。我以为当csv.reader无法再次读取该文件时,我正在通过seek(0)帮助它。当我搜索(0)并再次读取内容时,它能够读取它,只是行_num没有重置。让我困惑的是,一方面,seek(0)可以查找(当我们必须再次读取元素时),另一方面它不能查找(当我必须计算行数时)。这种方法有效,我得到了正确的行。有趣的是,使用这种方法后,行数也增加了:)