• python_剔除符合要求的数据并生成新的文件


    遍历目录下,将GGA文件中符合要求(起始-截止的字符串)的数据剔除掉,生成新的文件。

    1. import os
    2. import fnmatch
    3. import shutil
    4. import re
    5. import datetime
    6. def find_files(directory, pattern):
    7. for root, dirs, files in os.walk(directory):
    8. for filename in fnmatch.filter(files, pattern):
    9. yield os.path.join(root, filename)
    10. # 调用函数,查找所有包含 'xxx' 的文件
    11. def write_file(path_copy, path_copy_ex, pattern_start, pattern_end):
    12. with open(path_copy, 'r') as dst, open(path_copy_ex, 'w') as dst_w:
    13. # 默认写入文件
    14. writing = True
    15. num_count = 0
    16. for line in dst:
    17. # 正则匹配,起始行
    18. if re.search(pattern_start, line) and line.startswith('$GPZDA'):
    19. writing = False
    20. if writing:
    21. num_count += 1
    22. dst_w.write(line)
    23. # 正则匹配,截止行
    24. if re.search(pattern_end, line): # and line.startswith('$GPGGA'):
    25. writing = True
    26. # break
    27. if num_count == 0:
    28. print(r'当前时间:%s,没有数据匹配' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    29. else:
    30. print(r'当前时间:%s,总共%s行写入完成,起始于:%s,截止于:%s' % (
    31. datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), num_count, pattern_start, pattern_end))
    32. if __name__ == '__main__':
    33. directory = r"E:\data\日志文件第三组"
    34. # 匹配的起始截止字符
    35. pattern_start = "033040.00"
    36. pattern_end = "033140.00"
    37. for file_path in find_files(directory, "*gga*"):
    38. # 获取文件名称和文件路径
    39. file_path_base = os.path.basename(file_path)
    40. file_path_dir = os.path.dirname(file_path)
    41. # 拼接复制的文件名
    42. filename_new = "new_" + file_path_base
    43. path_copy = os.path.join(file_path_dir, filename_new)
    44. # 先复制文件
    45. shutil.copy2(file_path, path_copy)
    46. # 拼接处理(剔除)后的文件名
    47. filename_new_ex = "ex_" + file_path_base
    48. path_copy_ex = os.path.join(file_path_dir, filename_new_ex)
    49. # 匹配数据写入新文件
    50. write_file(path_copy, path_copy_ex, pattern_start, pattern_end)
    51. # 删除复制的文件
    52. if path_copy:
    53. os.remove(path_copy)

  • 相关阅读:
    Django笔记三十之log日志记录详解
    你好Avalonia框架
    (二)笔记.net core学习之依赖注入、服务注册
    用 SpringBoot 和 SSE 打造动态前端更新的终极指南
    驱动开发day4
    java毕业设计——基于java+Socket+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统
    论文笔记——多标签学习:GLOCAL
    【译】IEEE白皮书 6G 太赫兹技术的基本原理 2023版
    SocketIo的使用和基于SocketIO的聊天室
    计算机网络技术习题
  • 原文地址:https://blog.csdn.net/ramsey17/article/details/134437418