簡體   English   中英

使用 Python 跳過 CSV 中的第一行而不讀取文件

[英]Skip first rows from CSV with Python without reading the file

我需要從 CSV 文件中跳過一些第一行並將其保存到另一個文件中。

我目前完成這些任務的代碼是:

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

它可以正常工作。 唯一的問題是:此代碼在保存之前讀取整個文件。 現在我的問題是:我必須處理一個 4GB 大小的文件,我認為這段代碼會非常耗時。

是否有可能跳過一些第一行並保存文件而無需事先閱讀?

您不需要使用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)

使用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)

文檔

...如果fsrc對象的當前文件位置不是0 ,則只會復制從當前文件位置到文件末尾的內容。

即新文件將包含相同的內容,除了前 2 行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM