使用Python从CSV跳过第一行而不读取文件

时间:2019-11-26 15:10:07

标签: python csv

我需要从CSV文件中跳过一些第一行并将其保存到另一个文件中。

我目前完成此类任务的代码是:

import pandas as pd
df = pd.read_csv('users.csv', skiprows=2)    
df.to_csv("usersOutput.csv", index=False)

,它可以正常工作。唯一的事情是:此代码在保存之前会读取整个文件。现在我的问题是:我必须处理一个4GB大小的文件,我认为这段代码将非常耗时。

是否可以跳过第一行并保存文件而无需先阅读?

2 个答案:

答案 0 :(得分:3)

您不需要使用pandas来过滤文件中的行:

with open('users.csv') as users, open('usersOutput.csv', 'w') as output:
    for lineno, line in enumerate(users):
        if lineno > 1:
            output.write(line)

答案 1 :(得分:2)

具有shutil.copyfileobj(fsrc, fdst[, length])功能的最有效方法:

from shutil import copyfileobj
from itertools import islice

with open('users.csv') as f_old, open('usersOutput.csv', 'w') as f_new:
    list(islice(f, 2))   # skip 2 lines
    copyfileobj(f_old, f_new)

来自 doc

  

...如果fsrc对象的当前文件位置不是0,则仅   从当前文件位置到文件末尾的内容   将被复制。

即新文件将包含与前两行相同的内容。