使用Python跳过CSV中的第一行,而不读取文件
我需要跳过CSV文件的一些第一行,并将其保存到另一个文件中 我目前完成这些任务的代码是:使用Python跳过CSV中的第一行,而不读取文件,python,csv,Python,Csv,我需要跳过CSV文件的一些第一行,并将其保存到另一个文件中 我目前完成这些任务的代码是: import pandas as pd df = pd.read_csv('users.csv', skiprows=2) df.to_csv("usersOutput.csv", index=False) 而且它工作起来没有问题。唯一的问题是:这段代码在保存之前读取整个文件。现在我的问题是:我必须处理4GB大小的文件,我认为,这段代码将非常耗时 是否有可能跳过一些前几行并保存文件而不必在之前阅读
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)
具有以下功能的最有效方式:
从文件: 。。。如果
fsrc
对象的当前文件位置不是0
,则仅
从当前文件位置到文件结尾的内容
将被复制
i、 e.新文件将包含相同的内容,但前两行除外。此解决方案也很快,但不方便-下一步(f_old)添加的次数应与要跳过的行数相同。@evgeny,这绝对是错误的结论。查看我的更新。(使用
f_old.readlines()
可以根据需要跳过任意多行)。我使用了next
,因为你的案例非常简单。这是一个很好的答案,非常有效。@PeterWood,谢谢,我很高兴有人意识到什么方法真正更快、更有效。
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)