有很多这样的问题可以解决这个主题的某种形式,但它们似乎都非常低效,无法从csv文件中仅删除一行(通常涉及复制整个文件).如果我有这样的csv格式:

fname,lname,age,sex
John,Doe,28,m
Sarah,Smith,27,f
Xavier,Moore,19,m

消除莎拉的争吵最有效的方法是什么?如果可能,我希望避免复制整个文件.

推荐答案

这里有一个根本性的问题.据我所知,目前没有一个文件系统提供从文件中间删除大量字节的功能.您可以覆盖现有字节,或写入新文件.所以,你的 Select 是:

  • 创建一个没有违规行的文件副本,删除旧文件,并在适当位置重命名新文件.(这是您想要避免的选项).
  • 用将被忽略的内容覆盖行的字节.根据要读取文件的内容,注释字符可能有效,空格可能有效(甚至可能是\0).如果你想完全通用,这不是CSV文件的选项,因为没有定义注释字符.
  • 作为最后一个绝望的措施,你可以:

如果要删除第一行,最后一个选项显然没有多大帮助(但如果要删除靠近末尾的一行,它很方便).在这个过程中,它也很容易崩溃.

Python-3.x相关问答推荐

在Python代码中包含NAN值时,以两个矩阵计算RMSE

以特定方式重新排列 pandas 数据框的列

如何将函数映射到所有命名元组的元素?

使用 python 查找标记的元素

过滤列表中的所有字典以使用特定键并忽略其他键?

如何将元组列表拆分为两个单独的列表?

判断 gekko 中的表达式

删除重复项,但将值相加为一

从 yahoo Finance python 一次下载多只股票

Pytorch:图像标签

两个Pandas数据框中的共同列列表

具有两个或多个返回参数的函数注释

全局捕获快速 api 中的异常

Python中调用者函数的访问变量

如何将 cv2.imread 匹配到 keras image.img_load 输出

如何找出从哪个模块导入名称?

使用 python2 和 python3 创建一个 virtualenv

如何替换 Python pathlib.Path 中的子字符串?

Windows 下 Python 3.x 的 OpenCV

如何修复:cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库 - Python