悠悠楠杉
Python实战:为文本文件新增行自动添加序列号,python添加文本内容
例如,第一节可能如下所示:
1. 标题:清晨的菜市场
关键词:烟火气、市井、新鲜食材
描述:在城市尚未完全苏醒时,菜市场已开始热闹起来。
正文:天刚蒙蒙亮,街角的菜市场已经灯火通明……(约1000字)
当新增第二节时,程序应自动识别已有最大序号,并从“2.”开始写入新内容,避免重复或跳号。
实现思路:读取、解析、递增、写入
要实现这一功能,核心逻辑分为四个步骤:
- 读取现有文件:打开目标文本文件,读取所有已有内容。
- 解析当前最大序号:遍历每一行,提取开头的数字,确定当前已使用的最大编号。
- 生成新序号内容:基于递增后的序号,拼接新的标题、关键词、描述和正文。
- 追加写入文件:将新内容以追加模式写入原文件,保持原有数据不变。
这个流程看似简单,但在实际操作中需注意边界情况,如文件为空、序号格式不统一、意外中断等。因此,代码设计必须具备一定的健壮性和容错能力。
编写核心脚本
以下是完整的Python实现代码:
python
import os
import re
def extractnumberfrom_line(line):
"""从行首提取序号数字"""
match = re.match(r'^(\d+).', line.strip())
if match:
return int(match.group(1))
return -1 # 无效行返回-1
def getnextserial_number(filename):
"""读取文件并返回下一个可用序号"""
if not os.path.exists(filename):
return 1 # 文件不存在则从1开始
max_num = 0
try:
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
num = extract_number_from_line(line)
if num > max_num:
max_num = num
except Exception as e:
print(f"读取文件时发生错误:{e}")
return max_num + 1
return max_num + 1
def addnewsection(filename, title, keywords, description, content):
"""向文件中添加新的一节,带自动序号"""
serial = getnextserial_number(filename)
section = (
f"{serial}. 标题:{title}\n"
f"关键词:{keywords}\n"
f"描述:{description}\n"
f"正文:{content}\n\n"
)
try:
with open(filename, 'a', encoding='utf-8') as f:
f.write(section)
print(f"✅ 第 {serial} 节已成功添加")
except Exception as e:
print(f"写入文件失败:{e}")
示例调用
if name == "main":
filepath = "cityslow_life.txt"
# 模拟新增两节内容
add_new_section(
file_path,
"清晨的菜市场",
"烟火气、市井、新鲜食材",
"在城市尚未完全苏醒时,菜市场已开始热闹起来。",
"天刚蒙蒙亮,街角的菜市场已经灯火通明。摊主们熟练地摆开竹筐,青翠的蔬菜上还挂着露水,鱼贩手中的银鳞在灯光下闪闪发亮……"
)
add_new_section(
file_path,
"午后的老茶馆",
"怀旧、闲适、邻里交流",
"一间藏在巷子深处的老茶馆,承载着几代人的记忆。",
"推开那扇吱呀作响的木门,一股陈年茶叶的香气扑面而来。八仙桌旁坐着几位老人,他们一边喝茶,一边聊着家长里短……"
)
运行效果与验证
运行上述脚本后,生成的 city_slow_life.txt 文件内容如下:
1. 标题:清晨的菜市场
关键词:烟火气、市井、新鲜食材
描述:在城市尚未完全苏醒时,菜市场已开始热闹起来。
正文:天刚蒙蒙亮,街角的菜市场已经灯火通明。摊主们熟练地摆开竹筐,青翠的蔬菜上还挂着露水,鱼贩手中的银鳞在灯光下闪闪发亮……
- 标题:午后的老茶馆
关键词:怀旧、闲适、邻里交流
描述:一间藏在巷子深处的老茶馆,承载着几代人的记忆。
正文:推开那扇吱呀作响的木门,一股陈年茶叶的香气扑面而来。八仙桌旁坐着几位老人,他们一边喝茶,一边聊着家长里短……
可以看到,每一节都按顺序编号,结构清晰,便于后续查阅与编辑。即使中途删除某一行或手动修改序号,下次添加时仍能正确识别最大值并继续递增。
扩展应用:适应更多写作场景
该脚本的设计具有良好的扩展性。你可以根据不同的写作类型调整字段结构。例如:
- 写小说时可改为:“章节名”、“人物”、“场景”、“正文”
- 做知识卡片时可设为:“主题”、“标签”、“摘要”、“详细解释”
- 记录读书笔记则可用:“书名”、“页码”、“金句”、“感悟”
只需修改 add_new_section 函数中的字段名称和拼接逻辑即可快速适配。
此外,还可以进一步增强功能:
- 添加时间戳记录创建时间;
- 支持从CSV或Excel导入批量内容;
- 结合自然语言处理模型自动生成关键词或摘要;
- 提供命令行接口或图形界面方便非程序员使用。
总结:让技术服务于创作本身
写作的本质是表达与思考,而不应被繁琐的格式整理所束缚。通过这样一个简单的Python脚本,我们把机械性的编号工作交给计算机完成,从而让自己更专注于内容的深度与质量。
