Python3写入文本文件后读取异常求助:网格数据读写问题
解决文件写入后读取异常的问题
我一眼就看出问题出在两个地方:写入时没加换行符,读取时没处理换行残留,咱们一步步来修:
问题分析
写入的内容挤成了一团
你创建新文件时,循环三次写"0,0,0"但没加换行符\n,结果文件里的内容是0,0,00,0,00,0,0——三行内容硬凑成了一行。后续读取时,这一整行被分割成9个元素,完全不是你想要的三个子列表。读取时带了换行符尾巴
读取文件的每一行时,行尾会自带换行符\n,直接用line.split(",")会导致最后一个元素变成"0\n",而不是干净的"0"。
修正后的代码
import os fname = "grid.txt" # 替换成你的实际文件名 data = [] if os.path.isfile(fname): with open(fname, "r") as f: for line in f: # 先去掉换行符和前后空白,再分割 cleaned_line = line.strip() if cleaned_line: # 跳过可能存在的空行 row = cleaned_line.split(",") data.append(row) else: # 用with语句自动管理文件,不用手动close with open(fname, "w") as f: for i in range(3): # 每行末尾加换行符,确保内容分三行存 f.write("0,0,0\n") data.append(["0", "0", "0"]) print(data)
关键修正点
- 写入时给每行加
\n,生成的文件内容会是正常的三行:0,0,0 0,0,0 0,0,0 - 读取时用
line.strip()清理换行符和空白,保证分割后的元素干净;同时加了空行判断,避免文件有空行时生成空列表。 - 写入文件也改用
with语句,它会自动帮你关闭文件,比手动调用f.close()更稳妥,不会因为忘记关闭文件导致数据丢失。
内容的提问来源于stack exchange,提问作者The Eye
相关产品推荐
相关产品推荐

