如何使用 python 只读取 .csv 中特定范围的行?

How can I use python to read only a certain range of lines in a .csv?

我正在尝试处理一个巨大的 .csv 文件,但我不需要前 ~900000 行数据。这就是我最初试图摆脱那块数据的方式,但它使程序永远无法完成。有没有更直接的方法来做到这一点,我什至没有首先阅读前 900000 行?

firstColumn = [ ]
secondColumn = [ ]
thirdColumn = [ ]

readFile  = input("Enter name of file to be read: ")

with open(readFile,'r') as readFile:

    for eachline in readFile:                               # converting columns to lists
        parts = eachline.strip('\n').split(',')
        firstColumn.append(parts[0])
        secondColumn.append(parts[1])
        thirdColumn.append(parts[2])    
    
for j in range(900000):                          # nothing happens for these datapoints
    del firstColumn[j]
    del secondColumn[j]
    del thirdColumn[j]

您可以通过执行以下操作来跳过初始行:

with open(readFile, 'r') as f:
    # skip first 900,000 lines
    for _ in range(900000):
        next(f)
    for line in f:
        parts = line.strip('\n').split(',')
        firstColumn.append(parts[0])
        secondColumn.append(parts[1])
        thirdColumn.append(parts[2])

你是对的;那是糟糕。转换你不打算使用的 900K 行输入是很愚蠢的。相反,完全跳过它们:

# read past first 900K lines
with open(readFile,'r') as readFile:
    for _ in range(900000):
        readFile.readline()

    for eachline in readFile:                               # converting columns to lists
        # Continue as before

完成后,我强烈建议您切换到 csv reader 来获取文件的其余部分;您可以从那里通过简单的操作构建数据框。请注意不要关闭并重新打开文件,否则会重置文件头信息。

您可以使用 pandas,它可以制作副本 .csv 文件,并在副本中删除那些行。首先为您的文件制作一个数据框,然后您可以使用 .iloc[] 将行索引放入您想要开始的位置。这将在您要剪切的行之后。像字符串一样解析它。