通过python脚本获取TASKING编译的MAP文件中memory的使用情况

import csv
import pandas as pd
# 1 读取文件中特定的数据
def read_specific_data(file_path, output_file_path, line_number=None,line_number_range=None, pattern=None):
    """
    :param file_path: 文件路径
    :param line_number: 读取特定的行号,如果为None,读取所有行
    :param pattern: 读取匹配特定模式的行,如果为None,不使用模式匹配
    :return: 返回特定的数据
    """
    data = []
    with open(file_path, 'r') as file:
        if line_number_range is not None:
            with open(output_file_path, 'w') as outputfile:
                outputfile.write('')
            for number, line in enumerate(file, 1):
                if number >= line_number:
                    print(line)
                    with open(output_file_path, 'a') as outputfile:
                        outputfile.write(line)
                    if number-line_number + 1 == line_number_range:
                        break
        elif line_number is not None:
            # 读取特定行号
            for number, line in enumerate(file, 1):
                if number == line_number:
                    break 
            return line
        elif pattern is not None:
            # 读取匹配特定字符串的行号
            for number, line in enumerate(file, 1):
                if pattern in line:
                    data.append(line)
                    print(f"行号:{number}")
                    return number
        else:
            # 读取所有行
            data = file.readlines()
            return data
    
 
# 使用例子
  # 文件路径

# 1 使用通配符匹配文件路径
import glob
file_path = '**/*.map'  # 匹配../Debug/下所有以.map结尾的文件
outputfile_path = '**/*output.txt'
csv_outputfile_path = '**/*output.csv'

mapFiles = glob.glob(file_path)  
outputFiles = glob.glob(outputfile_path) 
csv_outputFiles = glob.glob(csv_outputfile_path) 
for mapFile in mapFiles:
    print(mapFile)
    for outputFile in outputFiles:
        print(outputFile)    
    for csv_outputFile in csv_outputFiles:
        print(csv_outputFile)

    # 读取包含'search_pattern'的行
    pattern = '| Memory        | Code     | Data     | Reserved | Free     | Total    |'  # 读取包含'search_pattern'的行
    pattern_line_Number1 = read_specific_data(mapFile, outputFile, pattern=pattern)
    # 读取第line_number行
    read_specific_data(mapFile, outputFile, line_number=pattern_line_Number1)
    
    pattern = '* Space usage in bytes'
    pattern_line_Number2 = read_specific_data(mapFile, outputFile, pattern=pattern)
    read_specific_data(mapFile, outputFile, line_number=pattern_line_Number2)
    
    line_range = pattern_line_Number2 - pattern_line_Number1
    coment = read_specific_data(mapFile, outputFile, line_number=pattern_line_Number1, line_number_range=line_range)
     
    # 打开文件,并清空内容
    with open(csv_outputFile, 'w') as file:
        file.write('')
    
    # 文件现在已经被清空

    # 读取文件,并用|作为分隔符
    df = pd.read_csv(outputFile, sep='|')
    
    # 输出DataFrame
    print(df)
    
    # 如果需要将DataFrame保存到CSV文件中
    df.to_csv(csv_outputFile, index=False)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值