2014-02-13 119 views
4

我需要閱讀一個有兩百萬行的CSV文件。該文件一整天都在增長。在每次處理文件(並將每行壓縮成字典)後,我再次啓動該過程,除了僅爲新行創建字典。Python CSV閱讀器從line_num開始

爲了達到新的界限,我必須用CSV閱讀器遍歷每一行,並將行號與我的「最後一行讀取」數據進行比較(據我所知)。

有沒有辦法只是'跳過'到該行號?

回答

2

你不能去特定的行號,除非行的大小是固定的,你知道這個大小。當我說你不能,我的意思是你不能沒有加載整個文件在內存中,並由\n字符分裂。

如果CSV有固定線路的大小是這樣的:

id,code,quantity 
0001,ABC43,00100 
0002,D2ZAD,00020 
.... 

其中每行具有相同的長度,那麼你可以移動到linesize*(linenumber+1),其中linenumber是你想要去的路線。
否則,你需要遍歷整個文件,以獲得n n行......它存在一個內置的模塊,名稱linecache但是它可以幫助你:Go to a specific line in Python?

+0

非常感謝您的幫助。今天下午我會嘗試linecache。 – 10mjg

+0

不要忘記接受答案,所以你的問題被標記爲「已解決」:) –

+0

我有點好奇,一旦我使用linecache到達特定線路時如何繼續。 – 10mjg

0

如果我這樣做,我認爲我會在每次讀取之後添加一個標記行 - 在文件再次保存之前,然後我會以字符串形式讀取文件,在標記上拆分,轉換回列表並將列表提供給進程。