You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python能否在文件非末尾位置(如关键词处)插入文本?附代码咨询

问题:如何在文件非末尾位置(基于关键词定位)添加文本?

用户需求:想在文件的非末尾位置(例如基于关键词定位)添加一段文本,当前代码如下:

import os
import datetime

file_one = "/var/lib/odoo/projects/Odoo/ecole/files/"+folder+"/eleves.xml"
modified = os.path.getmtime(file_one)
modified_date = datetime.datetime.fromtimestamp(modified)
day_date = datetime.datetime.today()
mode = 'a'
if day_date.day != modified_date.day:
    mode = 'w'
xml = xml_head + xml + xml_footer
with open(file_one, mode) as f:
    f.write(xml)

解决方案

当然可以实现!你当前的代码是基于日期判断来追加内容到文件末尾,或者直接覆盖整个文件,但要在指定关键词位置插入文本,我们需要调整处理逻辑,核心思路是先读取整个文件内容,找到关键词位置后插入新文本,最后写回文件。下面是修改后的代码和详细说明:

步骤说明:

  • 先读取原文件的全部内容
  • 定义你要定位的关键词(比如XML中的某个标签),找到它的位置
  • 在关键词的指定位置(前/后)插入你要添加的xml内容
  • 结合你原来的日期判断逻辑,完成最终的文件写入

修改后的代码示例:

import os
import datetime

# 替换成你实际要定位的关键词(比如XML里的特定标签)
target_keyword = "<students>"
file_one = "/var/lib/odoo/projects/Odoo/ecole/files/"+folder+"/eleves.xml"
modified = os.path.getmtime(file_one)
modified_date = datetime.datetime.fromtimestamp(modified)
day_date = datetime.datetime.today()
# 你要插入的目标文本块
xml_content = xml_head + xml + xml_footer

# 读取原文件内容
with open(file_one, 'r') as f:
    original_content = f.read()

# 处理插入逻辑
if target_keyword in original_content:
    # 在关键词后面插入新内容(如果要在前面插入,就改成 f"{xml_content}\n{target_keyword}")
    new_content = original_content.replace(target_keyword, f"{target_keyword}\n{xml_content}")
else:
    # 如果没找到关键词, fallback 到追加到文件末尾的逻辑
    new_content = original_content + "\n" + xml_content

# 结合日期判断写入文件(因为已经生成了完整的新内容,直接用'w'模式覆盖即可)
with open(file_one, 'w') as f:
    f.write(new_content)

注意事项:

  • 请根据你的XML实际结构替换target_keyword,确保它能唯一定位到你要插入的位置
  • 插入时记得添加换行符\n,保证XML格式的可读性
  • 如果你的文件特别大,读取整个内容会占用较多内存,这种情况下可以考虑逐行读取处理,但普通大小的XML文件用上述方法足够高效

内容的提问来源于stack exchange,提问作者PseudoWithK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:21:25