Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python跳过CSV中的第一行,而不读取文件_Python_Csv - Fatal编程技术网

使用Python跳过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大小的文件,我认为,这段代码将非常耗时 是否有可能跳过一些前几行并保存文件而不必在之前阅读

我需要跳过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)

具有以下功能的最有效方式:


从文件:

。。。如果
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)