添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文介绍了如何高效地使用Python删除文本文件的最后一行或最后N行数据,以及删除文件内容的最后N个字符。通过定位行首位置或直接截断,实现了对大型文件的快速操作,适用于C++、JAVA等其他编程语言。对于超大文件,推荐使用文件映射进行处理。 摘要由CSDN通过智能技术生成

看了一下现有的删除文本部分内容的代码,发现效率都很低,大多是复制原先的代码然后重新幅值,尤其对大型文件使用这种方法会消耗大量时间。下面介绍一下如何更高效的删除

删除最后一行/最后N行数据

定位最后一行/最后N行的行首位置,然后截断之后的数据

import os
# 在文本文件中,若没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常
file_old = open('D:/EEG/LXP/FRAG1/FZ_H_ch5.txt', 'rb+')
m = 15
# 1.定位文件末尾的前m个字符的位置,大小可根据每一行的字符数量修改,为一估计值,但不能超过文件总字符数
# 若要删除最后一行,要确保m比最后一行的字符数大
# 若要删除后N行,要确保后N行的总字符数比m小
# 若文件很小或无法大体估计每一行的字符数,可以删除这行代码
file_old.seek(-m, os.SEEK_END)	 
# 2.从步骤1定位的位置开始读取接下来的每一行数据,若步骤1的代码删除,则会从文件头部开始读取所有行
lines = file_old.readlines()	
# 3.定位到最后一行的行首,若要删除后N行,将lines[-1]改为lines[-N:]即可
file_old.seek(-len(lines[-1]), os.SEEK_END)	
file_old.truncate()  # 截断之后的数据 
file_old.close()

删除后N个字符

直接定位倒数第N个字符,然后截断即可

import os
file_old = open('D:/EEG/LXP/FRAG1/FZ_H_ch5.txt', 'rb+')
n = 6
# 定位倒数第n个字符
file_old.seek(-n, os.SEEK_END)	
# 截断之后的数据 
file_old.truncate()  
file_old.close()

是不是即简单有高效,其实OS库大多数编程语言都有,C++、JAVA等改一下格式也可实现该功能,要是超过1G的大型文件,建议使用文件映射读取文件,这段代码也适用

source = open('./input.txt', 'r') done = 0 # 作为文件是否读结束的标志 index = 0 # 标记最后一个非空的位置 count = 0 # 记录当前数 while not done: # 使用readline避免内存载入过大玩意 line = source.readline() count += 1 if line != str(): # 说明文件没读结束
工作的时候,需要重复批量处理TXT文本数据,当需要处理的文件太多时就有点费时间,在网上看了些代码,结合自己浅薄的理解,勉强实现了,做个记录,等以后再来看看有没有再接着改善的机会。 import os import fileinput #提供几种办法,这个库不一定需要 for i in os.listdir('文本路径'): #例举出文件夹下面所有的文件名 domain = os.path.abspath('文本路径') file = os.path.join(domain.i) #把文件名和文件
python操作txt文件中数据教程[1]-使用python读写txt文件 python操作txt文件中数据教程[2]-python提取txt文件中的列元素 python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转... 打开文件后逐读取同时记录指针位置,由于读取完一行后指针位于尾,所以在读取完最后一行后需要将指针移到上一行末尾然后调用f.truncate()。为存储倒数第二末尾的位置,我们需要一个1 ×\times× 2的数组存储文件指针位置: # 打开文件,由于只有二进制模式才支持移动指针操作,所以第二个参数要有'b'。 f = open('test.txt', 'rb+') line = ... lines = file.readlines() del lines[-1] # 删除最后一行 del lines[0:16] # 删除第1到第17 file.close() file_new = open('test.txt','w') file_new.writelines(lines) # 将删除后的数据写入文件 file_new.close() 这段代码首先打开文件并读取所有。然后,它将文件指针移动到文件的开头,并截断文件内容。最后,它将除了最后一行的所有重新写入文件中,从而实现删除最后一行的效果。 #### 引用[.reference_title] - *1* [python删除文本文件最后一个换符](https://blog.csdn.net/he_min/article/details/77500798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python删除文件最后一行](https://blog.csdn.net/FZUMRWANG/article/details/82945545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]