用Python给TXT文件每行首个数字减1遇问题:代码致内容丢失
问题:批量修改文本文件每行首数字减1
我有一个TXT文件,内容如下:
10 0.4600 0.4833 0.0433 0.0833 4 0.7833 0.6350 0.1167 0.0933 7 0.3583 0.4933 0.1667 0.1700
需要将每行第一个数字减1,同时保留其余浮点数,得到结果:
9 0.4600 0.4833 0.0433 0.0833 3 0.7833 0.6350 0.1167 0.0933 6 0.3583 0.4933 0.1667 0.1700
我尝试了以下代码,但执行后文件内容完全消失:
path = 'file.txt' with open(path, "r+") as f: lines = f.readlines() lines = str(int(lines[0].split()[0]) - 1) with open(path, 'w') as file: file.writelines(lines)
错误原因
- 仅处理了第一行的首数字,直接将
lines变量替换为单个数字的字符串,丢失了所有其他行的内容 - 使用
w模式打开文件会清空原有内容,最终只写入了单个数字,导致原文件内容看似"消失"
正确代码实现
path = 'file.txt' # 读取并处理所有行 with open(path, 'r') as f: processed_lines = [] for line in f: # 跳过空行避免报错 if not line.strip(): continue # 拆分每行内容 parts = line.split() # 首数字减1后转回字符串 parts[0] = str(int(parts[0]) - 1) # 重新拼接为原格式的行 processed_line = ' '.join(parts) + '\n' processed_lines.append(processed_line) # 写入处理后的内容 with open(path, 'w') as f: f.writelines(processed_lines)
代码说明
- 逐行读取文件,对每一行单独处理,保留原格式
- 自动跳过空行,避免拆分空内容导致的错误
- 处理完成后批量写入所有行,覆盖原文件完成修改
内容的提问来源于stack exchange,提问作者Hallow_Worlds
相关产品推荐
相关产品推荐

