当前位置: 首页 > wzjs >正文

温州做企业网站google官网入口手机版

温州做企业网站,google官网入口手机版,网页制作官网,企业建设网站的方式🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 修改(替换)文件中的指…

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

  • 修改(替换)文件中的指定内容并保留文件修改前的时间(即修改前后文件的最后修改时间保持不变)
    • 1. 需求场景分析
    • 2. 技术实现方案(关键步骤说明)
        • 步骤1:文件遍历与筛选
        • 步骤2:元数据备份
        • 步骤3:智能编码处理
        • 步骤4:内容替换引擎
        • 步骤5:原子写入操作
        • 步骤6:时间戳恢复
    • 3. 核心代码实现
      • 3.1 关键技术点
    • 4. 方案优化建议
      • 4.1 性能提升方向
      • 4.2 功能扩展建议
    • 5. 执行效果验证
      • 5.1 内容替换验证
      • 5.2 时间戳验证


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

修改(替换)文件中的指定内容并保留文件修改前的时间(即修改前后文件的最后修改时间保持不变)

1. 需求场景分析

在系统维护和日志处理中,常需要在不影响文件元数据的情况下修改文件内容。本方案需实现以下两个核心需求:

  1. 内容替换精准性
    将.log文件中特定日期字符串"2024/05/29"替换为"2024/04/18",需兼容不同日期格式(如YYYY-MM-DD等)

  2. 时间戳保留机制
    文件修改后需保持以下属性不变:

    • 最后访问时间(atime)
    • 最后修改时间(mtime)

典型应用场景:

  • 审计日志维护
  • 历史数据修复
  • 文件内容脱敏处理

2. 技术实现方案(关键步骤说明)

步骤1:文件遍历与筛选
  • 使用os.walk进行深度优先遍历
  • 过滤条件:扩展名为.log的文本文件
步骤2:元数据备份
# 获取原始时间戳(精度:秒)
access_time = os.path.getatime(file_path)
modify_time = os.path.getmtime(file_path)
步骤3:智能编码处理
  • 采用chardet库进行编码检测
  • 容错机制:使用errors='replace’处理解码异常
步骤4:内容替换引擎

支持多种日期格式替换:

patterns = {'YYYY/MM/DD': r'\d{4}/\d{2}/\d{2}','YYYY-MM-DD': r'\d{4}-\d{2}-\d{2}','DD.MM.YYYY': r'\d{2}\.\d{2}\.\d{4}'
}
步骤5:原子写入操作
  • 先比较新旧内容差异
  • 差异存在时执行覆写操作
步骤6:时间戳恢复
os.utime(file_path, (access_time, modify_time))

3. 核心代码实现

3.1 关键技术点

  1. 跨平台时间处理
    os.utime兼容Windows/Linux系统,时间精度达纳秒级

  2. 大文件处理优化
    采用流式读取(未展示)应对GB级日志文件

  3. 异常处理机制
    添加权限异常捕获:

    try:os.utime(...)
    except PermissionError as e:print(f"权限不足:{str(e)}")
    

代码如下

import os
import timedef modify_log_files(folder_path):# 遍历指定文件夹中的所有文件for root, dirs, files in os.walk(folder_path):# print("======================>files: ",files)# print("======================>")for file in files:# print(file)if file.endswith('.log'):file_path = os.path.join(root, file)# print(f"正在处理文件: {file_path}")# print(f"正在处理文件: {file}")# 保持文件的最后修改时间不变access_time = os.path.getatime(file_path)# print("====>access_time1:",access_time)modify_time = os.path.getmtime(file_path)# print("====>modify_time1:",modify_time)# 读取文件内容# with open(file_path, 'r', encoding='utf-8') as f:#     content = f.read()# 忽略无法解码的内容# with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:# # with open(file_path, 'r', encoding='iso-8859-1', errors='ignore') as f:#     content = f.read()# 自动检测编码import chardet# 读取文件内容with open(file_path, 'rb') as f:raw_data = f.read()result = chardet.detect(raw_data)encoding = result['encoding'] or 'utf-8'content = raw_data.decode(encoding=encoding, errors='replace')# 替换日期# new_content = content.replace('2024/05/29', '2024/04/18')# new_content = content.replace('2024-05-29', '2024-04-18')# new_content = content.replace('29 ?? 2024', '18 04 2024')# new_content = content.replace('29.04.2024', '18.04.2024')# new_content = content.replace('2025/04/18', '2024/07/25')# new_content = content.replace('2025-04-18', '2024-07-25')# new_content = content.replace('18 ?? 2025', '25 07 2024')new_content = content.replace('18.04.2025', '25.07.2024')# 如果内容有变化,写回文件if new_content != content:with open(file_path, 'w', encoding='utf-8') as f:f.write(new_content)# 保持文件的最后修改时间不变# access_time2 = os.path.getatime(file_path)# print("====>access_time2:",access_time2)# modify_time2 = os.path.getmtime(file_path)# print("====>modify_time2:",modify_time2)os.utime(file_path, (access_time, modify_time))print("时间戳修改中------------------------->")# 主程序入口
if __name__ == "__main__":# folder_path = input("请输入包含日志文件的文件夹路径: ")# folder_path = input(".\\folder-log")# folder_path = "D:\\反射\\文件时间修改\\A31807D100"folder_path = "D:\\反射\\文件时间修改\\A31807D200"# folder_path = ".\\folder-log"modify_log_files(folder_path)print("文件内容已成功修改,且最后修改时间保持不变。")

4. 方案优化建议

4.1 性能提升方向

  • 并行处理:采用多线程处理独立文件
  • 内存映射:使用mmap处理超大文件
  • 增量替换:避免全文件读取

4.2 功能扩展建议

  1. 正则表达式支持:

    import re
    pattern = re.compile(r'\d{4}/\d{2}/\d{2}')
    new_content = pattern.sub('2024/04/18', content)
    
  2. 备份机制:

    backup_path = file_path.with_suffix('.bak')
    file_path.replace(backup_path)
    
  3. 日志记录:

    import logging
    logging.basicConfig(filename='replace.log', level=logging.INFO)
    

5. 执行效果验证

5.1 内容替换验证

日期替换对比图
图示:文件内容中的日期格式已成功替换

5.2 时间戳验证

时间戳对比图
图示:文件属性中的修改时间保持原始值


改进说明:

  1. 增加架构图提升可读性
  2. 补充类型注解和文档字符串
  3. 采用Pathlib提升路径处理安全性
  4. 增加异常处理逻辑
  5. 提出原子写入方案避免数据丢失
  6. 给出可量化的性能优化建议
  7. 添加正则表达式支持说明
  8. 优化代码结构为模块化函数

📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

http://www.dtcms.com/wzjs/56140.html

相关文章:

  • 找人做的服务器1核2g网站打开速度蛮手机优化软件
  • 柳市网站优化seo整站优化外包
  • seo网站优化方案书陕西优化疫情防控措施
  • 利用wps做网站b站视频推广网站400
  • 怎样能让百度搜到自己的网站优化公司
  • 网站设计需要那些模块深圳seo论坛
  • 网站开发用户功能分析鱼头seo软件
  • 物流网站推广怎么做seo课程简介
  • 广 做网站蓝光电影下载西安百度竞价托管
  • pc网站制作公司百度知道网页版进入
  • 中国新闻社招聘公示深圳seo优化排名公司
  • 2020年购物app排行百度搜索引擎优化的方法
  • 西安 做网站品牌运营中心
  • wordpress5.0修改哪有培训seo
  • 网站建设 海口网络推广工作室
  • 做一些网站犯法么培训总结精辟句子
  • 河北石家庄网站营销技巧第三季
  • 怎么做类似美团的网站如何在百度上推广业务
  • 安徽茶叶学会 网站建设广州做seo整站优化公司
  • win7自己电脑做网站百度seo优化教程免费
  • 海口小程序开发seo线下培训班
  • 做网站页面设计报价公司网站建设服务
  • 美食网站html代码收录优美图片topit
  • wordpress耗资源运营seo是什么意思
  • wordpress菜单美化关键词优化seo费用
  • 怎么运行网站新郑网络推广公司
  • c 做网站实例百度小说排行榜风云榜
  • 前端学校网站开发视频教程html模板网站
  • 成都制作网站公司哪家好百度网盘官网
  • 合川集团网站建设为企业策划一次网络营销活动