Python实现TXT文件倒序读取及生成文件末尾空行去除
解决方案
实现步骤
- 读取源文件所有有效行,过滤空行
- 反转行列表(或按序数降序排序)实现从大到小排列
- 拼接行内容并写入目标文件,避免末尾空行
基础版代码(源文件行序与序数正相关)
如果源文件本身是按序数升序排列的,直接反转行列表即可:
# 读取源文件并过滤空行 with open('sp_ordinal_numbers_info.txt', 'r', encoding='utf-8') as src_file: # 保留非空行,并去除每行末尾的换行符 valid_lines = [line.rstrip('\n') for line in src_file if line.strip()] # 反转行列表,实现序数从大到小排列 valid_lines.reverse() # 写入处理后的文件,确保无末尾空行 with open('sp_ordinal_numbers_info_fixed.txt', 'w', encoding='utf-8') as dest_file: if valid_lines: dest_file.write('\n'.join(valid_lines))
进阶版代码(源文件行序混乱时)
如果源文件的行不是按序数排序的,需要先提取序数再降序排列:
def get_ordinal_value(line): # 根据实际文本格式调整序数提取逻辑,这里假设序数是每行首段数字 try: return int(line.split()[0]) except (IndexError, ValueError): # 处理格式异常的行,设为最小值放到末尾 return -1 # 读取并过滤空行 with open('sp_ordinal_numbers_info.txt', 'r', encoding='utf-8') as src_file: valid_lines = [line.rstrip('\n') for line in src_file if line.strip()] # 按序数降序排序 valid_lines.sort(key=get_ordinal_value, reverse=True) # 写入目标文件 with open('sp_ordinal_numbers_info_fixed.txt', 'w', encoding='utf-8') as dest_file: if valid_lines: dest_file.write('\n'.join(valid_lines))
关键要点
- 不依赖
os库:仅用内置的文件操作和列表方法实现 - 去除空行:读取时通过
line.strip()过滤纯空行 - 避免末尾空行:用
'\n'.join()拼接所有行,一次性写入,不会在文件末尾额外添加换行符
内容的提问来源于stack exchange,提问作者Matt095
相关产品推荐
相关产品推荐

