我想删除文件中的一行;当前我正在创建一个新文件,复制除要删除的行之外的每一行,删除旧文件,并将新文件重命名为与旧文件名相同的文件名。有更好的方法可以删除一条线吗?
f = open('./todo.txt', 'r')
newF = open('./todo-run.txt', 'a')
lines = f.readlines()
cLine = lines[int(index) - 1]
for line in lines:
if line != cLine:
newF.write(line)
f.close()
newF.close()
os.remove('./todo.txt')
shutil.move('./todo-run.txt', './todo.txt')
用什么方法更好?例如,您可以在文件中对数据进行无序处理,然后截断它,使用较少的内存,但需要更多的查找(特别是如果您调整它以使其不在一个块中读取后面的部分):
或者您无法在重命名之前删除旧文件,以获取原子更新。这取决于你的目标。在
它并不比你的好多少,但是(因为你的文件似乎可以放在主内存中),你可以试试这个:
sed中的一个解决方案,您可以使用“subprocess”调用它。例如,要删除第18行,请执行以下操作:
相关问题 更多 >
编程相关推荐