Python脚本将TXT文件末行移至首行时的换行问题排查与修复
问题原因
脚本出现换行丢失的核心问题是:
- 使用
strip()移除了最后一行的换行符(\n),导致将其插入到首行后,没有换行分隔,直接与原首行内容拼接。 readlines()读取的每行内容默认保留末尾的换行符,被strip()处理后的最后一行变成无换行的纯文本,和后续带换行的行拼接时就会出现内容连在一起的情况。
修复方案
以下两种方式任选其一即可:
方式一:移除不必要的strip()调用
readlines()已为每行保留换行符(包括最后一行,除非文件本身末尾无换行),直接将最后一行移到开头即可:
import os directory = r'E:\Desktop\Social_media\edit8\New folder (2)' files = [file for file in os.listdir(directory) if file.endswith('.txt')] for file in files: file_path = os.path.join(directory, file) with open(file_path, 'r') as f: lines = f.readlines() # 直接取出最后一行,不做strip处理 last_line = lines.pop() lines.insert(0, last_line) with open(file_path, 'w') as f: f.writelines(lines)
方式二:手动添加换行符(适合需要清理行尾空格的场景)
如果需要用strip()清理行尾多余空格或空白字符,插入前给最后一行手动添加换行符:
import os directory = r'E:\Desktop\Social_media\edit8\New folder (2)' files = [file for file in os.listdir(directory) if file.endswith('.txt')] for file in files: file_path = os.path.join(directory, file) with open(file_path, 'r') as f: lines = f.readlines() last_line = lines.pop().strip() # 添加换行符后再插入 lines.insert(0, last_line + '\n') with open(file_path, 'w') as f: f.writelines(lines)
额外说明
如果部分TXT文件最后一行本身没有换行符,方式一仍可能出现拼接问题,此时方式二更稳妥——手动添加换行符可确保首行与下一行始终有分隔。
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

