首页 > 编程语言 >python 按时间戳删除32×32数组的前2列和后9列(批量处理多个txt)

python 按时间戳删除32×32数组的前2列和后9列(批量处理多个txt)

时间:2025-01-16 21:43:56浏览次数:1  
标签:列和后 python 32 数组 file path output txt

前面是单个txt

这次批量处理多个txt

将所得结果保存到另一个文件夹

Python 首先处理一个txt内容中多个时间戳,每个时间戳\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$对应32行×32列数组,删除数组前2列和后9列。其次采用第一步方法,批量处理某文件夹内所有txt文件,将结果批量存到另一个文件夹内。

为了处理包含特定时间戳格式的TXT文件,并删除每个时间戳对应的32行×32列数组中的前2列和后9列,然后批量处理文件夹中的所有TXT文件并将结果保存到另一个文件夹,我们可以使用以下Python代码。

首先,确保你的TXT文件格式如下:

  • 每文件包含一个或多个时间戳,每个时间戳格式为YYYY-MM-DD HH:MM:SS
  • 每个时间戳后面跟着一个空行。
  • 紧接着是32行数据,每行包含32个由空格分隔的数字
  • #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    """
    @Time : 2025/1/16 16:43
    @Author : JK
    @Email : 1493117872@qq.com
    @File : list.py
    @Project : untitled4
    """
    import os
    import re
    
    
    def process_array_data(data_lines):
        """
        处理数组数据,删除前2列和后9列。
        """
        processed_data = []
        for line in data_lines:
            # 分割每行的数字,转换为浮点数列表,并删除前2个和后9个元素
            numbers = list(map(int, line.strip().split()))
            processed_row = numbers[2:-9]
            processed_data.append(processed_row)
        return processed_data
    
    
    def process_single_file(file_path):
        """
        处理单个TXT文件,返回处理后的内容(时间戳和对应的处理后的数组)。
        """
        with open(file_path, 'r', encoding='utf-8') as file:
            lines = file.readlines()
    
        results = []
        i = 0
        while i < len(lines):
            # 匹配时间戳
            timestamp_match = re.match(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$', lines[i].strip())
            if timestamp_match:
                timestamp = lines[i].strip()
                i += 1  # 跳过空行
    
                # 读取接下来的32行数据
                array_lines = lines[i:i + 32]
                processed_array = process_array_data(array_lines)
    
                # 将处理后的数组和时间戳添加到结果列表中
                results.append((timestamp, processed_array))
    
                # 移动到下一个时间戳(如果有的话)
                i += 32
            else:
                i += 1  # 如果不匹配时间戳,则继续检查下一行
    
        return results
    
    
    def process_txt_files_in_directory(input_dir, output_dir):
        """
        批量处理指定目录中的所有.txt文件,并将结果保存到输出文件夹中的新TXT文件中。
        """
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
    
        for filename in os.listdir(input_dir):
            if filename.endswith(".txt"):
                input_file_path = os.path.join(input_dir, filename)
                results = process_single_file(input_file_path)  # 获取处理后的结果
    
                # 构造输出文件的名称和路径
                output_filename = os.path.splitext(filename)[0] + '_processed.txt'
                output_file_path = os.path.join(output_dir, output_filename)
    
                # 将处理后的内容写入新的TXT文件
                with open(output_file_path, 'w', encoding='utf-8') as output_file:
                    for timestamp, array in results:
                        # 写入时间戳
                        output_file.write(f"{timestamp}\n")
                        # 写入一个空行(如果需要)
                        output_file.write("\n")
                        # 写入处理后的数组数据
                        for row in array:
                            output_file.write(" ".join(map(str, row)) + "\n")
                        # 如果数组之间需要空行分隔,可以在这里再次写入一个空行(可选)
                        # output_file.write("\n")  # 可选,根据格式需求决定是否添加
    
    
    # 示例使用
    input_directory = 'D:/rain'
    output_directory = 'D:/rain/result'
    process_txt_files_in_directory(input_directory, output_directory)

    注意事项:

    1. 正则表达式r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$'用于匹配时间戳。它假设时间戳是文件的唯一一行,并且正好符合该格式。如果时间戳可能出现在其他上下文中,或者格式有所不同,请调整正则表达式。

    2. process_single_file函数中,我们假设每个时间戳后面紧跟着一个空行和32行数据。如果实际文件格式有所不同(例如,空行数不同,或数据行数不同),请相应地调整代码。

    3. 在将处理后的数组写入输出文件时,我们在数组之间添加了一个空行以提高可读性。如果不需要这个空行,请删除相应的output_file.write("\n")语句。同样地,如果在每个数组内部的数据行之间需要空行分隔(这通常不是标准的矩阵/数组格式),请取消注释或添加相应的语句。

    4. 请确保将input_directoryoutput_directory变量的值替换为你实际的文件夹路径。

标签:列和后,python,32,数组,file,path,output,txt
From: https://www.cnblogs.com/shirleysu90/p/18675802

相关文章

  • 从零开始的python之旅(day4)
    从零开始的python之旅(day4)  昨天博客园好像崩了,所以昨天晚上没写,就挪到今天来补了,昨天主要是文件操作,话不多说,上代码  addressBookdefmain():file1=open('TeleAddressBook.txt','rb')file2=open('EmailAddressBook.txt','rb')file1.readline()fil......
  • 【ArcGIS】基于ChatGPT、GIS与Python机器学习的地质灾害风险评估、易发性分析、信息化
    目录第一章、ChatGPT大语言模型提示词与地质灾害基础及平台介绍第二章、空间信息数据库建设第三章、ChatGPT支持下地质灾害风险评价模型与方法第四章、ChatGPT支持下地质灾害风险性、易损性、易发性评价第五章、基于ChatGPT、Python数据预处理与分析【进阶篇】第六章、Ch......
  • Python-基础-列表(list)
    目录1、列表1.1列表的定义1.2列表的特点2、列表的常用语法2.1常用操作2.2列表常用的方法2.3列表常用的函数3、列表推导式1、列表1.1列表的定义列表(List)是一种用于存储多个项目的可变数据结构。它允许你将不同类型的元素(如数字、字符串、甚至其他列表)组织在......
  • Python+Django的社区爱心捐赠(Pycharm Flask Django Vue mysql)
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的社区爱心捐赠(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端vue.js框架支持:django数据库:mysql5.7数据库......
  • Python+Django的老年群体安全用药管理系统(角色:用户、医生、药师、管理员)(Pycharm Flas
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的老年群体安全用药管理系统(角色:用户、医生、药师、管理员)(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端......
  • 基于粒子群优化算法的计及需求响应的风光储能微电网日前经济调度(Python代码实现)
    目录0引言1计及风光储能和需求响应的微电网日前经济调度模型1.1风光储能需求响应都不参与的模型1.2风光参与的模型1.3风光和储能参与模型1.4风光和需求响应参与模型1.5风光储能和需求响应都参与模型 2需求侧响应评价2.1 负载率2.2可再生能源消纳率2.3用户......
  • python中的列表和元组
    列表(List)可变性:列表是可变的(mutable),这意味着你可以在创建列表后添加、删除或更改其中的元素。定义方式:使用方括号[]来定义一个列表my_list=[1,2,3,"apple","banana"]操作:可以对列表执行多种操作,如追加、插入、删除等。追加元素:my_list.append(4)插入元素:my_list.ins......
  • 使用 Python 实现验证码自动识别
    验证码在防止自动化攻击中扮演了重要角色,而使用OCR(光学字符识别)技术可以实现对验证码内容的自动解析和提取。在本文中,我们将使用Python结合TesseractOCR来完成英文数字验证码的识别任务。环境配置安装Python和依赖库首先,确保您已经安装了Python。若尚未安装,请访问Pyt......
  • 专为高性能计算和低功耗应用设计的MPF100T-1FCVG484E MPF100TL-FCSG325E MPF100TL-FCV
    ‌PolarFireFPGA是Microchip推出的一款高性能、低功耗的FPGA产品系列,特别适用于各种需要高性能计算和低功耗的应用场景‌。这些器件包括MPF100T-1FCVG484EMPF100TL-FCG484EMPF100TL-FCG484IMPF100TL-FCSG325EMPF100TL-FCVG484EMPF100TL-FCVG484IFPGA-现场可编程门阵列......
  • 使用 Python 实现验证码识别的简单教程
    验证码是用于验证用户是否为机器人的重要工具。在本教程中,我们将利用Python和TesseractOCR引擎编写一个程序,用于识别英文和数字组成的验证码。通过适当的图像预处理,我们可以有效地提高识别的准确性。环境配置更多内容访问ttocr.com或联系1436423940安装Python和必需库......