Python处理TXT文件:给短行补空格 统一每行长度为180字符
实现行长度统一的Python解决方案
你当前的代码只完成了行数统计和空格数计算的逻辑,没有实际完成内容修改和写入的步骤,另外r+模式下边读边改文本文件会因为文件指针偏移导致内容覆盖,不推荐直接用这种方式操作。
推荐实现方案(中小文件适用)
先把所有内容读入内存处理完成后,再一次性写回原文件,逻辑简单不容易出错:
filename = "text.txt" processed = [] with open(filename, 'r', encoding='utf-8') as f: for line in f: # 去除行尾换行符避免长度计算误差 content = line.rstrip('\n') # 左对齐补空格到180字符,再加回换行符 processed.append(content.ljust(180) + '\n') # 写回原文件 with open(filename, 'w', encoding='utf-8') as f: f.writelines(processed) print(f"处理完成,共{len(processed)}行已统一为180字符长度")
关键说明
str.ljust(180)是Python内置的左对齐补全方法,会自动在字符串末尾补空格到指定长度,不用手动计算空格数拼接- 如果你需要把行尾的换行符算入180的总长度,直接把行处理逻辑改成
processed.append(line.ljust(180))即可,不需要单独剥离换行符 - 你之前尝试insert方法失败的原因是:文本文件是顺序存储结构,没有原生的插入操作支持,直接在打开的文件流中插入内容会覆盖后续原有内容;而列表的insert方法仅能操作内存中的列表对象,无法直接作用于磁盘上的文件内容。
大文件适用方案(内存不足场景)
如果文件体积过大无法全部装入内存,可以用临时文件中转的方式,读一行处理一行写一行,处理完成后替换原文件:
import os filename = "text.txt" temp_path = "temp_processed.txt" with open(filename, 'r', encoding='utf-8') as in_f, open(temp_path, 'w', encoding='utf-8') as out_f: for line in in_f: content = line.rstrip('\n') out_f.write(content.ljust(180) + '\n') # 原子替换原文件,避免中途出错损坏原文件 os.replace(temp_path, filename)
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

