python常用模块总结(嵌入式日志分析)

直接上代码,通过实例代码模仿规律

1.python多线程之——thread(比如在嵌入式里面烧写版本)

#!/usr/bin/python3

import _thread
import time

# 为线程定义一个函数
def print_time( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
      print ("%s: %s" % ( threadName, time.ctime(time.time()) ))

# 创建两个线程
try:
   _thread.start_new_thread( print_time, ("Thread-1", 2, ) )
   _thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
   print ("Error: 无法启动线程")

while 1:
   pass

分析上述代码:

步骤1:

import _thread:python线程的名字,之所以会加一个下划线,是因为要和python2区分开,先把多线程的模块导入进来

步骤2:

def 关键字定义一个功能函数:实现一个具体的功能(比如烧写版本),python这样的高度封装的脚本语言功能的实现都是以函数为单位实现的,然后要给这个定义的函数传入必要的参数,为了便于查看输出打印,应该使用占位符进行格式化输出:print("%s:%s"%(A,B))

步骤3:

创建线程:为了避免异常情况,要采用try-except的方式处理,然后用_thread.start_new_thread(功能函数,函数必要的参数)

步骤4:

终止线程:ctrl+c

这样就算完成了一个最简单的基本功能的多线程,现成的复杂程度取决于函数的复杂程度,总之,python这样的语言,高度封装,最重要的还是要能把一个任务节能型拆解,拆分成各种各样的小步骤,俗称“造轮子”,然后通过函数调用,把这些轮子整合在一起,就完成了一个业务功能,在嵌入式的自动化测试领域很常用,按照这个套路就可以很快的整合出来

 

2.python读取设备串口打印的字符串之——serial

import serial

ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口

ser.open()  #打开串口

port_list = list(serial.tools.list_ports.comports()) #python遍历串口

ser.readline().decode("utf-8") #读取串口打印

ser.close() #串口关闭

 

3.python切割字符串

str.find() #python查找字符串

s.strip().lstrip().rstrip(',') #python去掉字符串首尾的特殊字符

str.split(",") #python切割字符串,切割完以后是一个列表

str.[0:3] #python截取字符串

更多操作:https://blog.csdn.net/caodongfang126/article/details/105380512?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%93%8D%E4%BD%9C%E5%AD%97%E7%AC%A6%E4%B8%B2&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-105380512.pc_search_result_before_js

4.python日志处理模块logging

很多程序都有记录日志的需要,python作为优秀的脚本语言,也提供了丰富的操作方法,主要模块为logging,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别

最简单的用法打印日志:

import logging

logging.debug("正在调试")
logging.info("正在打印")
logging.warning("程序有异常")
logging.error("程序出现错误")
logging.critical("程序出现严重问题")

将日志记录到指定文件中:

logging.basicConfig(filename="example.log", format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %I:%M:%S',
                    level=logging.INFO)
logging.debug("正在调试")
logging.info("正在打印")
logging.warning("程序有异常")
logging.error("程序出现错误")
logging.critical("程序出现严重问题")

这种方式会将日志记录到脚本同级目录下,但是终端是不会打印的,如果想要把日志同时打印在终端就需要学习下一个模块Handler

logging.StreamHandler 
使用这个Handler可以向类似与sys.stdout或者sys.stderr的任何文件对象(file object)输出信息。它的构造函数是: 
StreamHandler([strm]) 
其中strm参数是一个文件对象。默认是sys.stderr
————————————————
logging.FileHandler 
和StreamHandler类似,用于向一个文件输出日志信息。不过FileHandler会帮你打开这个文件。它的构造函数是: 
FileHandler(filename[,mode]) 
filename是文件名,必须指定一个文件名。 
mode是文件的打开方式。参见Python内置函数open()的用法。默认是’a’,即添加到文件末尾
————————————————

暂时就写到这里,后面遇到新的问题了再补充

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值