python 第一步def一个txt,按时间戳拆分内容以查找单独的部分,时间戳的格式为 YYYY-MM-DD HH:MM:SS,因此我们将使用正则表达式根据此模式进行拆分,拆分后处理32×32列的数组,删除前2列和后9列。第二步dif处理指定目录中的所有 .txt 文件,并按第一步的方法处理所有txtx文件。将所得的多个txt结果另存到输出文件夹中
为了完成你描述的任务,我们需要首先定义一个函数来处理单个TXT文件,该函数将使用正则表达式按时间戳拆分内容,并假设时间戳之后的内容可以表示为一个32x32的数组(尽管在纯文本文件中,数组通常不是以这种形式直接存储的,但我会根据你的描述进行假设)。然后,我们将定义第二个函数来处理指定目录中的所有TXT文件。
由于纯文本文件中通常不包含直接的数组结构,我将假设时间戳之后的内容是以空格或逗号分隔的数字,这些数字可以重新格式化为32x32的数组。然而,由于你要求删除数组的前两列和后九列,我将只处理文本行,并相应地删除字符。
请注意,以下代码是一个简化的示例,它可能需要根据你实际的数据格式进行调整。
#!usr/bin/env python # -*- coding:utf-8 _*- """ @author:JK @file:jakjdklj.py @time:2024/04/$ {DAY} @desc: """ import os import re def process_single_txt(file_path): """ 处理单个TXT文件,按时间戳拆分内容,并处理假设的32x32数组(以文本形式), 删除每行(代表数组的一行)的前2个字段(假设由空格分隔)和后9个字段。 返回处理后的内容列表。 """ pattern = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})') # 时间戳正则表达式 processed_content = [] with open(file_path, 'r', encoding='utf-8') as file: lines = file.readlines() current_block = [] # 用于存储当前时间戳下的内容块 for line in lines: match = pattern.match(line) if match: # 如果找到时间戳,则处理前一个块(如果有的话) if current_block: # 假设每行代表数组的一行,用空格分隔字段 # 删除前两列(即前两个字段)和后九列(即后九个字段) processed_rows = [ ' '.join(row.split()[2:-9]) # 如果字段数足够 for row in current_block if len(row.split()) > 11 # 至少11个字段 ] processed_content.extend(processed_rows) current_block = [] # 重置当前块 # 将时间戳行添加到输出(可选,根据你的需求) # processed_content.append(line.strip()) else: # 否则,将行添加到当前块 current_block.append(line.strip()) # 处理最后一个块(文件末尾可能没有时间戳) if current_block: processed_rows = [ ' '.join(row.split()[2:-9]) # 如果字段数足够 for row in current_block if len(row.split()) > 11 # 至少11个字段 ] processed_content.extend(processed_rows) return processed_content 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) processed_content = process_single_txt(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: output_file.writelines('\n'.join(processed_content) + '\n') # 示例使用 input_directory = "D:/rain" output_directory = "D:/rain/result" process_txt_files_in_directory(input_directory, output_directory)
标签:input,批量,python,processed,file,path,output,txt From: https://www.cnblogs.com/shirleysu90/p/18673605