簡體   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