码迷,mamicode.com
首页 > 编程语言 > 详细

python删除某一行

时间:2019-08-14 21:57:17      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:方法   int   覆盖   trunc   blog   打开   python   not   adl   

整理了网络上的一些方法,一般有两种方法:
第一种:是先把文件读入内存,在内存中修改后再写入源文件。

例子:将内容包含“123”的所有行删去:

with open(‘C:/Users/lai/Desktop/1.txt‘,‘r‘) as r:
lines=r.readlines()
with open(‘C:/Users/lai/Desktop/1.txt‘,‘w‘) as w:
for l in lines:
if ‘123‘ not in l:
w.write(l)

第二种:我们可以使用 open() 方法把需要修改的文件打开为两个文件,然后逐行读入内存,找到需要删除的行时,用后面的行逐一覆盖。实现方式见以下代码。
with open(‘file.txt‘, ‘r‘) as old_file:
with open(‘file.txt‘, ‘r+‘) as new_file:

current_line = 0

# 定位到需要删除的行
while current_line < (del_line - 1):
old_file.readline()
current_line += 1

# 当前光标在被删除行的行首,记录该位置
seek_point = old_file.tell()

# 设置光标位置
new_file.seek(seek_point, 0)

# 读需要删除的行,光标移到下一行行首
old_file.readline()

# 被删除行的下一行读给 next_line
next_line = old_file.readline()

# 连续覆盖剩余行,后面所有行上移一行
while next_line:
new_file.write(next_line)
next_line = old_file.readline()

# 写完最后一行后截断文件,因为删除操作,文件整体少了一行,原文件最后一行需要去掉
new_file.truncate()


---------------------
版权声明:本文为CSDN博主「qq_31135027」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31135027/article/details/78908559

python删除某一行

标签:方法   int   覆盖   trunc   blog   打开   python   not   adl   

原文地址:https://www.cnblogs.com/weststar/p/11354684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!