python之前简单了解过,但基本上没有学习过。
最近总有一些重复的事情,所以希望学习一下是否可以提高效率
1.基础
语言学习总离不开语法和撰写规范。下面是我找到的资料,没有花很大力气,所以不敢确定是否是最好的,不过对目前我的目的差不多够了。
基本知识:http://www.runoob.com/python3/python3-tutorial.html
命名规范:https://www.cnblogs.com/wangcp-2014/p/4608265.html
2.实践
看完前面的东西也用不了多长时间,然后就跃跃欲试了。当前使用的场景主要是log的分析(因为面对的是用户报障,所以有大量的log分析),所以就直接上手了。开始写的时候还是很生的(毕竟刚学的),所以经常要回去翻一些语法的细节。不过还好,差不多多半天的时间语法就差不多够用了。然后专心于功能逻辑的设计。
我写的功能相对比较明确,主要如下:
1.读取一个文件目录或文件(主要是os, os.path)
2.解压压缩文件(我是用的是winrar,会有窗口弹出,rar命令行工具处理格式较少,没法满足要求)
3.读取每一个文件,解析其中的关键log(主要是file操作和文本操作)
4.根据业务逻辑分析关键log(文本处理,业务逻辑解析,开始用的是str的各种操作,后来改成了正则模块,re)
5.打印已确信的问题,并打印无法确认的,还需要人为分析的关键log信息(格式控制)
参考资料如下:
解压:https://www.cnblogs.com/anpengapple/p/6140213.html
https://blog.csdn.net/T1243_3/article/details/80170006
https://blog.csdn.net/liudongdong19/article/details/79579770
http://www.runoob.com/python3/python3-reg-expressions.html
曾遇到的困扰的地方:
1.类成员和实例成员的写法和java或c++差异很大
2.无类型导致编写提示无效
3.优化
主要是两部分吧,
1性能优化,如何检测性能,并针对性能低下的部分进行改写。
https://blog.csdn.net/asukasmallriver/article/details/74356771
https://github.com/happyshdq/flashtext
2.设计优化。这个怎么说呢,有一些语言特性,更多的是一些通用的东西。
这里主要做的是:在实现功能的基础上,建立了一些清晰的概念模型,然后定义了一个控制流程,然后把后续的可能扩展点做了处理:可以后续在此概念模型下,尽量不修改现有代码文件的情况下扩展新的功能(主要是分析新问题的log)
关键概念:
sniffer:识别问题类型
parser:分析问题,并输出问题关键信息
flowmanager:控制整体流程
context:上下文及相关小概念
config:配置文件
此外,形成了两个通用模块:
fileexplorer:文件处理
log:基本的、业务无关的log解析
4.后记
整体感觉python还是比较好用的,最重要的是感觉轻量。脚本语言嘛,随写随用,对于一些分析工作来说,完全没有什么编译部署运行的感觉。
语言难度应该还好。也许受java/C++这些语言的影响,在用python时非强类型确实有些使用细节上的困扰,比如IDE的编码提示(我用的pycharm)。