簡體   English   中英

Python:mmap文件上的csv.reader工作不正確

[英]Python: csv.reader on mmap file works incorrect

我需要使用Python解析一個相當大的csv文件。 為此,我使用csv(文件包含引號),並且我想使用多處理來並行化此過程。 每個進程都將從mmap文件對象讀取其行。 但是在實現這種方法時,我遇到了下一個問題(我知道帶語句的python,這只是一個演示):

import csv


f = open('temp', 'r+b')

reader = csv.reader(f)
reader.next()

f.close()

。OUPUTS:

['1000415037534300', '2013-07-14 13:25:13.000000', 'request', '281', 'Camino', 'LG']

沒錯,但請考慮以下示例:

import csv
import mmap


f = open('temp', 'r+b')
m = mmap.mmap(f.fileno(), 0)

reader = csv.reader(m)
reader.next()
reader.next()
reader.next()

m.close()
f.close()

版畫

['1']
['0']
['0']

換句話說,它從文件中讀取一個字節。 我必須使用mmap,因為沒有其他方法可以允許多個進程使用同一文件。 問題是,為什么csv.reader在mmap對象中表現得如此奇怪? mmap對象具有與標准python文件對象相同的api,因此csv.reader應該可以正常工作。

您可以將iter與readline一起使用以讀取每一行:

 reader = csv.reader(iter(m.readline, ""))

如果對m進行迭代,則一次將獲得一個字符,因此將m傳遞給讀者將表現出相同的行為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM