python扩展
补充一些有趣的知识
1. sys模块方法的补充,打印进度条
import sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.1)
2. 实现简单的shell sed替换功能
import sys res = sys.argv print(res)
#命令行参数,在Terminal输入命令:python update_flie.py ,res接收到的结果为list,第一个元素是程序本身
将a.txt文件中所有的e替换为x
Hello everyone Today is Saturday
代码: 执行命令: python update_file.py e x
import sys find_str = sys.argv[1] #找到需要替换的字母,argv的第二个元素 replace_str = sys.argv[2] #替换成新的字母,argv的第三个元素 with open("a.txt", "r", encoding='utf-8') as f, open("b.txt", "w", encoding='utf-8') as fe: for line in f: if find_str in line: line = line.replace(find_str, replace_str) fe.write(line)
替换后b.txt文件:
Hxllo xvxryonx Today is Saturday
3. 异常处理
最常用的一般是try,然后except Exception捕获到异常信息,进行打印
如果想本地打印报错到详细信息,可以使用 traceback.print_exc()
如果想写进日志文件,可以使用 msg = traceback.format_exc(), 接收返回的错误信息
import traceback l = [1,2,3,4] try: result = l[0] r = 1/0 print(r) except ZeroDivisionError as e: print('异常', e) except Exception as e: traceback.print_exc() #打印异常堆栈信息,红色打印 msg = traceback.format_exc() #返回了堆栈信息 print("处理异常", msg) else: print(result) finally: print("finally") #不管出错没出错最后都执行
4. 日志 loguru 模块
python自带的logging模块,处理起来相对比loguru麻烦些。 Loguru 一个能彻底解放你的日志记录器。它即插即用,具备多种方式滚动日志、自动压缩日志文件、定时删除等功能。
除此之外,多线程安全、高亮日志、日志告警等功能也不在话下。
a. 需要安装
pip install loguru
b. 举例说明, 即可使用,可以打印debug/info/error级别错误
from loguru import logger user_name = 'xiaoxiao' log_file_path = "/Users/ywq/py_workspace/gs/tianHe/logs/server.log" logger.debug(log_file_path, f'this is a debug flag') logger.info(log_file_path, " this is a info flag") logger.error(log_file_path, 'this is a error flag')
c. 写入日志文件的具体方法
from loguru import logger ''' rotation : 每天创建一个日志文件 retention: 日志内容有效期为5天 ''' log_file_path = "/Users/ywq/py_workspace/gs/tianHe/logs/server.log" logger.add(log_file_path, rotation='1 day', retention='5 days') my_log = logger
d. 其他python文件直接引入 my_log即可。
参考:https://cloud.tencent.com/developer/article/1849382