我想通過csv文件閱讀時,我正在查找的百分比。我知道如何使用tell()和文件對象來做到這一點,但是當我使用csv.reader讀取該文件對象時,然後對我的reader對象中的行執行for循環,tell()函數總是返回它在文件的末尾,無論我在循環中的哪個位置。我怎樣才能找到我的位置?蟒蛇csv扭曲告訴
當前代碼:
with open(FILE_PERSON, 'rb') as csvfile:
spamreader = csv.reader(csvfile)
justtesting = csvfile.tell()
size = os.fstat(csvfile.fileno()).st_size
for row in spamreader:
pos = csvfile.tell()
print pos, "of", size, "|", justtesting
我扔「justtesting」在那裏只是爲了證明告訴()不會返回0,直到我開始我的for循環。
這將爲我的csv文件中的每一行返回相同的結果: 579 of 579 | 0
我在做什麼錯?
好的,這是有道理的,那麼有沒有什麼有效的方法來確定我有多遠?我知道我可以做rows = list(spamreader),然後對於rownum,列中的行(行):但我已經讀過,效率很低。還有其他訣竅嗎? – 2013-02-14 16:41:20
@BlairConnolly:爲你添加一個。它*將*讀取整個文件以首先計算行數。 – 2013-02-14 16:42:08
在調用'enumerate'之前,你不需要強制轉換爲'list' - 你可以在'enumerate(spamreader)'中進行行處理,這同樣有效。 – katrielalex 2013-02-14 16:42:31