gpt4 book ai didi

python - 不懂Python的csv.reader对象

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:47 25 4
gpt4 key购买 nike

我在 python 的内置 csv 模块中遇到了一个我以前从未注意到的行为。通常,当我读入 csv 时,它会跟随 doc's几乎一字不差,使用“with”打开文件,然后使用“for”循环遍历读取器对象。但是,我最近尝试连续两次迭代 csv.reader 对象,结果发现第二个“for”循环什么也没做。

import csv

with open('smallfriends.csv','rU') as csvfile:
readit = csv.reader(csvfile,delimiter=',')

for line in readit:
print line

for line in readit:
print 'foo'

控制台输出:

Austins-iMac:Desktop austin$ python -i amy.py 
['Amy', 'James', 'Nathan', 'Sara', 'Kayley', 'Alexis']
['James', 'Nathan', 'Tristan', 'Miles', 'Amy', 'Dave']
['Nathan', 'Amy', 'James', 'Tristan', 'Will', 'Zoey']
['Kayley', 'Amy', 'Alexis', 'Mikey', 'Sara', 'Baxter']
>>>
>>> readit
<_csv.reader object at 0x1023fa3d0>
>>>

所以第二个“for”循环基本上什么都不做。我的一个想法是 csv.reader 对象在读取一次后从内存中释放。但事实并非如此,因为它仍然保留它的内存地址。我找到了一个 post那提到了类似的问题。他们给出的理由是,一旦对象被读取,指针就停留在内存地址的末尾,准备向对象写入数据。它是否正确?有人可以更详细地了解这里发生的事情吗?有没有办法将指针推回内存地址的开头以重新读取它?我知道这样做是不好的编码习惯,但我主要只是好奇并且想了解更多关于 Python 的幕后情况。

谢谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com