繁体   English   中英

Python: 逐行读取CSV文件,如何检测结束?

[英]Python: reading CSV file line by line, how to detect end?

我通过这个脚本读取了 CSV 大文件(数百万条记录)。 如何检测文件是否结束?

import csv
f = open("file.csv", newline='')
csv_reader = csv.reader(f)

while true:
    do something with next(csv_reader)[6]

csv.reader将完全读取文件并将其存储在也是iterable的变量中。 要“逐行”阅读,您需要:

for row in csv_reader:
    do something

如果你直接想要最后一行:

with open(‘file_name.csv’,’r’) as file: 
    data = file.readlines() 
lastRow = data[-1] 

这将非常缓慢并且消耗 memory。 替代方案是使用 pandas。

显而易见的解决方案是循环遍历csv_reader ,正如这个答案所建议的那样。 如果那不切实际, next function的文档说:

通过调用其__next__()方法从迭代器中检索下一项。 如果给出默认值,则在迭代器耗尽时返回它,否则引发 StopIteration。

从而为您提供两种检测结束的方法。

我用 pandas 解决了它:

import pandas as pd
import numpy as np
csv_reader = pd.read_csv("file.csv", skiprows=2, usecols=[6])
csv_a = csv_reader.to_numpy()

此脚本跳过前 2 行,然后仅导入第 6 列并转换为数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM