Linux下python脚本自动执行命令并提取相关信息

在Linux下进行项目调试的时候,需要运行生成的二进制文件(也可以理解为软件)并且存储在运行过程中产生的一些信息,可以参考下面这个脚本,防止以后用到的时候重新写。

关于一些基本函数的用法可以直接网上搜一下,也是一个不错的学习过程,附源码:

#! /usr/bin/env python

import os, sys
import csv
import re

def parse_file_name( fname ):
    return fname.split('.')[0]

def run_abc( filename ):
    cmd = 'abc -c \" read_aiger benchmarks/'+ filename +';compress2rs;if -g -K 6;ps; quit\" > /home/thm/Desktop/abc/data/'+filename.split('.')[0]+'.log'
    os.system( cmd )

def extract_info_in_log( base_name ):
    path = "/home/thm/Desktop/abc/data/" + base_name+".log"
    count = 0
    with open( path, 'r' ) as f:
        for line in f:
            strings = line.split()

            if "[" in line:
                lev=line.split('=')[6].split()[0]
                nd=line.split('=')[3].split()[0]
                return base_name, nd, lev

if __name__ == "__main__":
    argc = len( sys.argv )
    if( argc != 1 ):
        print( "./test_if.py" )
        exit( 1 )
    else:

        #create csv file
        path = "abc_run.csv"
        with open(path,'w') as f:
            csv_write = csv.writer(f)
            csv_head = ["Benchmark",  " nd", "lev"]
            csv_write.writerow( csv_head )

            #foreach file run abc
            for filename in os.listdir( "benchmarks" ):
                run_abc( filename )
                base_name = parse_file_name( filename )
                strings = extract_info_in_log( base_name )
                print(strings)
                csv_write.writerow( strings )                      

由于时间关系,今天暂时放在这里,之后进行详细的解释,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值