我需要从CSV文件中跳过一些第一行并将其保存到另一个文件中。
我目前完成此类任务的代码是:
import pandas as pd
df = pd.read_csv('users.csv', skiprows=2)
df.to_csv("usersOutput.csv", index=False)
,它可以正常工作。唯一的事情是:此代码在保存之前会读取整个文件。现在我的问题是:我必须处理一个4GB大小的文件,我认为这段代码将非常耗时。
是否可以跳过第一行并保存文件而无需先阅读?
答案 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
,则仅 从当前文件位置到文件末尾的内容 将被复制。
即新文件将包含与前两行相同的内容。