Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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的特定行_Python_Csv - Fatal编程技术网

在Python中读取CSV的特定行

在Python中读取CSV的特定行,python,csv,Python,Csv,我正在打开一个大的CSV文件,在将数据插入阵列的过程中,我得到了MemoryError。那么如何读取该CSV文件的特定行(例如从第1行到第10000行) 代码如下: datafile=open('test.csv','r') datareader=csv.reader(datafile,delimiter=';') for row in datareader: MyArray.append(row) 使用: 或者,对于任何范围: start = 1000 stop = 2000 fo

我正在打开一个大的CSV文件,在将数据插入阵列的过程中,我得到了MemoryError。那么如何读取该CSV文件的特定行(例如从第1行到第10000行)

代码如下:

datafile=open('test.csv','r')
datareader=csv.reader(datafile,delimiter=';')

for row in datareader:
    MyArray.append(row)
使用:

或者,对于任何范围:

start = 1000
stop = 2000
for i, row in enumerate(datareader):
    if i < start: 
        continue     # skip this row
    elif i > stop:
        break        # abort the loop
    else:            # ("else" is not strictly necessary here, but more explicit)
        MyArray.append(row)
start=1000
停止=2000
对于i,枚举(datareader)中的行:
如果我开始:
继续#跳过这一行
elif i>停止:
中断#中止循环
else:#(“else”在这里不是严格必要的,但更明确)
MyArray.append(行)
使用:

或者,对于任何范围:

start = 1000
stop = 2000
for i, row in enumerate(datareader):
    if i < start: 
        continue     # skip this row
    elif i > stop:
        break        # abort the loop
    else:            # ("else" is not strictly necessary here, but more explicit)
        MyArray.append(row)
start=1000
停止=2000
对于i,枚举(datareader)中的行:
如果我开始:
继续#跳过这一行
elif i>停止:
中断#中止循环
else:#(“else”在这里不是严格必要的,但更明确)
MyArray.append(行)
我将使用而不是
枚举

from itertools import islice

# First 10000
MyArray.extend(islice(datareader, 10000))

# Or, specify start/stop ranges (10000-20000 (non inclusive))
MyArray.extend(islice(datareader, 10000, 20000))

# Or read in chunks of 10k
for chunk in iter(lambda: list(islice(datareader, 10000)), []):
    # do something with 10k rows
我将使用而不是枚举:

from itertools import islice

# First 10000
MyArray.extend(islice(datareader, 10000))

# Or, specify start/stop ranges (10000-20000 (non inclusive))
MyArray.extend(islice(datareader, 10000, 20000))

# Or read in chunks of 10k
for chunk in iter(lambda: list(islice(datareader, 10000)), []):
    # do something with 10k rows

您的csv文件有多大?为什么要将这些行放入一个数组(
list
np.array
?)中,而不仅仅是重复它们?你想实现什么?Tim的答案很好,超过1GB,大约900万条线路。我需要行中的数据内容(它是网络数据包)您的csv文件有多大?为什么要将行放入数组(
list
np.array
?),而不仅仅是重复它们?你想实现什么?Tim的答案很好,超过1GB,大约900万条线路。我需要的数据内容行(它是网络数据包)哦,更好。我以前从未使用过
islice
,但这确实是一个完美的例子@用户3636424,你可能想接受这个答案。@Tim我不在乎接受/重复-只是很高兴它对某人有用:)@JonClements:我也不介意,但这是更好的答案,应该放在首位。@Tim好吧-看来OP采纳了你的建议。。。谢谢你的编辑。哦,好多了。我以前从未使用过
islice
,但这确实是一个完美的例子@用户3636424,你可能想接受这个答案。@Tim我不在乎接受/重复-只是很高兴它对某人有用:)@JonClements:我也不介意,但这是更好的答案,应该放在首位。@Tim好吧-看来OP采纳了你的建议。。。谢谢你的编辑。