python写的代码分析工具,锻炼lisp语言的思维

import os
import re
import subprocess
import time
import numpy as np
import pandas as pd

#文本地址
print('plese old file path')
file_path = input()
print('Please new file name :')
New_file_name = str(input())
new_file_path = "/Users/deleter/Desktop/analysis_code_and_try_file/"+str(New_file_name)+time.strftime('%y-%m-%d' , time.localtime())+".py"
#读取本代码文件并list化
file = open(file_path).readlines()
text= open(file_path).read()
#读取本代码文件的text格式 <-这里的eval没啥亮点,就是玩玩
def change_read(C):
    string = ['open(input())','.read()','.readlines()']
    return C == True and eval(string[0]+string[1]) or eval(string[0]+string[-1])

#想想怎么让下面这段代码在ipython里直接运行
run = '%run /Users/deleter/Desktop/analysis_code_and_try_file/coder.py'

#写入成型代码
def coder(code_string):
	newcode = open(new_file_path,'w+')
	for codeline in code_string:
		newcode.writelines(codeline)
	return newcode.close()

#宏生成代码处理字符串
E='[ [i , file [ i ][0]] for i in range( len ( file ) ) ]'


#python操作命令行示例----值得扩充
subprocess.call(['ls', '-all'], shell=True)
#用命令行操作代码删除除了源文件和最新的备份文件以外的所有文件




#创建关键字搜索 => scr code in here ,it's can change any tool for you need
example_of_fun =  "jreturn = lambda file : [ [i , file [ i ] ] for i in range ( len ( file ) -1 ) if 'jreturn' in file [ i ] ]"

#对代码list化,并标将符合逻辑的行数返还
Textchangelist = lambda coderows , logic : [[index_of_rows,file[index_of_rows]] for index_of_rows in range(len(file)-1) if logic == True]
#寻找任何关键字 => find(file)
find = lambda anycode:[[i,file[i]] for i in range(len(file)) if str(anycode) in file[i]]
#按照行号查找代码
find_index = lambda range_list : [[file[i] for i in range(len(file)-1) if i == e] for e in list(range_list)]
#替换关键字 => replace_to_list(file)
replace_to_list = lambda othercode , anycode :[file[i].replace(anycode,othercode) for i in range(len(file)-1) if anycode in file[i]]
#代码按行list化 => file_list(file)
file_list = lambda file : [[i,file[i]] for i in range(len(file)-1)]
#按照行数选行 => change_line(row_index)
change_line = lambda row : file_line[row]
#显示最大代码关键词量行数 => maxlen(file)
maxlen = max([len(le) for le in file])
#显示最大代码字数行数

#按照代码相同筛选行数 => str_coparison(file)
str_comparison = lambda file , file_index : [file[i] == file[file_index] for i in range(len(file)-1)]
#按照长度相通筛选代码 => len_comparison(file)
len_comparison = lambda file , file_index : [len(file[i]) == len(file[file_index]) for i in range(len(file)-1)]
#将代码ascii后numpy数组化 => codetonumpyint(file)
codetonumpyint = lambda file : [[i,np.array(list(map(ord,list(file[i]))))] for i in range(len(file))]
#将代码array化
#codetonumpystr = lambda file :pass

#找到所有java函数 = jplulic(file)
jpublic = lambda file :[[i,file[i]] for i in range(len(file)-1) if 'public' in file[i]]
#找到所有java-->public static final  => findpublicstaticfinal(file)
findpublicstaticfinal = lambda file : [file[i] for i in range(len(file)-1) if 'public static final' in file[i]]
#找到所有的return => findreturn(file)
findreturn = lambda file : [ [i , file [ i ] ] for i in range ( len ( file ) -1 ) if 'return' in file [ i ] ]
#找到所有java注释 => jcommet(file)
jcomment = lambda file : [ [i , file [ i ] ] for i in range ( len ( file ) -1 ) if (re.findall(r'/\*(.*)\*/',file[i])[0] or '//') in file [ i ] ]




#代码变成DataFram()用来定位代码关键字位置,要变成excel格式有行标列标

#显示代码在table格式的所有字符位置和空格位置,以最大字符数制作横向表格标签

#循环列队使用函数修改多文件

#构建标html签语法筛选器,也可以看看lxml

'''正则处理字符模块慢慢写'''





#构建一个选择行数。并返还为text的推导式

#将字符串写入py文件并运行
Compile_the_string = lambda return_list_to_text : eval(return_list_to_text)

help = ([find('#'),find('\'\'\'')])

#切片示例
#倒切
print(help[0][::-1])
### 取从下标为2的元素翻转读取
print(help[2::-1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值