Python如何实现自定义表格格式写文件 追加数据不重复表头
实现代码
直接用下面的脚本即可满足需求,核心是区分首次写入和追加写入的逻辑,追加时先替换原有末尾的底部分隔线,保证格式正确:
import time import os FILE_PATH = 'myfile.txt' # 表格固定格式片段 TOP_BORDER = "_________________________________\n" HEADER_ROW = "|Day |Month |Year |Hour |Minute |\n" HEADER_DIVIDER = "|-------------------------------|\n" ROW_DIVIDER = "|===============================|\n" BOTTOM_BORDER = "|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n" # 拆分当前时间字段 day, month, year, hour, minute = time.strftime("%d %m %Y %I %M").split() # 按列宽对齐生成新数据行 new_data_row = f"|{day:<3}|{month:<6}|{year:<5}|{hour:<5}|{minute:<7}|\n" if not os.path.exists(FILE_PATH) or os.path.getsize(FILE_PATH) == 0: # 首次写入:输出完整表头+首行数据 with open(FILE_PATH, 'w', encoding='utf-8') as f: f.write(TOP_BORDER) f.write(HEADER_ROW) f.write(HEADER_DIVIDER) f.write(new_data_row) f.write(BOTTOM_BORDER) else: # 追加写入:先读取原有内容,移除末尾旧的底部分隔线 with open(FILE_PATH, 'r', encoding='utf-8') as f: old_content = f.read().rstrip() old_content = old_content.removesuffix(BOTTOM_BORDER.rstrip('\n')) # 拼接行分隔线、新数据、新的底部分隔线后写回 updated_content = f"{old_content}\n{ROW_DIVIDER}{new_data_row}{BOTTOM_BORDER}" with open(FILE_PATH, 'w', encoding='utf-8') as f: f.write(updated_content)
逻辑说明
- 首次运行时(文件不存在/文件为空),会自动写入顶部边框、表头、表头分隔线、第一条数据和底部边框,和要求的首次写入格式完全一致
- 后续重复运行脚本时,不会重复写入表头:会先读取原有文件内容,删掉末尾旧的
^形底部分隔线,替换为=形的行间分隔线,再追加新的数据行,最后补上新的底部分隔线 - 代码里用f-string的左对齐格式符保证每列宽度固定,表格始终对齐,不会因为数据长度变化错位
运行效果
首次运行后文件内容:
_________________________________ |Day |Month |Year |Hour |Minute | |-------------------------------| |01 |07 |2022 |01 |19 | |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|
第二次运行追加后文件内容:
_________________________________ |Day |Month |Year |Hour |Minute | |-------------------------------| |01 |07 |2022 |01 |19 | |===============================| |01 |07 |2022 |02 |10 | |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|
多次运行会持续按规则追加新行,不会破坏原有格式和历史数据。
内容的提问来源于stack exchange,提问作者Zen35X
相关产品推荐
相关产品推荐

