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)
通过python脚本获取TASKING编译的MAP文件中memory的使用情况
最新推荐文章于 2024-08-15 01:55:01 发布