编程语言 Python 实现 linux 命令 tail Python 实现 linux 命令 tail ,在某些场景需要实时读取文件的新增内容,使用linux的命令行tail不是很容易操作,所有有了python版本的tail,方便直接加入到脚本。自定义处理函数 同时还可以指定从文件开头,还是文件末尾读取,以及读取的间隔时间。t = tail.Tail("/tmp/able") yuziyue 30 Jul 2023 · 2 min read
编程语言 Python字典的所有用法整理 OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元素插入进来的时候, 它会被放到链表的尾部。可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典。 defaultdict 的一个特征是它会自动初始化每个key 刚开始对应的值。 yuziyue 26 Jul 2023 · 5 min read
编程语言 Python 实现经典排序算法 将顺序存储的 n 个待排序记录划分为两个区间:一个有序区间,一个无序区间;初始时有序区间为 [R1],无序区间为 [R2...Rn],令 i 指向无序区中第一个元素,初始值 i=1。 当 i<=n 时重复指向: 将当前无序区中的第一个记录Ri插入到有序区的适当位置,使得有序区变为一个新的有序区。 yuziyue 22 Jul 2023 · 15 min read
编程语言 一文彻底搞懂 Python 字符编码 ascii、gb2312、gbk、unicode、utf-8 这些编码都分别表示什么含义呢 ?ascii编码规定,一个英文字符需要一个字节(8bit位)大小,汉字的编码超出了ascii 的范围,至少需要两个字节来表示一个中文字符,某些复杂的汉字需要3到6个字节来表示。 yuziyue 22 Jul 2023 · 8 min read
编程语言 Python 虚拟环境 virtualenv 与 virtualenvwrapper 总结 虚拟环境就是每个项目都单独使用一个隔离 Python 环境,每个项目自己的安装的包只在这个虚拟环境下有效,不会影响其他项目的。我们常用了两个工具来管理虚拟环境:virtualenv、virtualenvwrapper yuziyue 17 Jul 2023 · 3 min read
编程语言 Python多版本管理工具pyenv pyenv 可以在不影响系统的 python 的情况下,安装并管理多版本的Python,它不依赖原有系统的任何 Python 设置, github 地址 https://github.com/pyenv/pyenv 使用脚本自动安装,安装目录会在 $HOME/.pyenv 下,可以关注下安装过程中的输出日志。 yuziyue 14 Jul 2023 · 3 min read
编程语言 使用Python实现杨辉三角 1. 杨辉三角 杨辉三角,是二项式系数在三角形中的一种几何排列。下一行的每一个元素都等于本行相邻两元素相加而得到。 2. 实现方法 将本行拷贝两个副本,将这两个副本分别在前后各补上一个 0,然后将这两个副本相加即可得到下一行数据。lines 表示要显示的行数。 yuziyue 12 Jul 2023 · 1 min read
编程语言 Python模块与包使用实践 一. 定义 模块 : 一个 .py 文件就是一个模块(module),去除.py后缀的文件名就是模块名。 包 : __init__.py 文件所在目录就是包(package),目录名称就是包名称。 二. 两种形式的 import import ... from ... import ... 第一种import后面只能是模块名、包名。 yuziyue 12 Jul 2023 · 2 min read
编程语言 Python全局自定义异常处理 使用场景 自定义 exceptionhook ,当程序遇到错误后,可以发送钉钉消息、发送邮件等等,把重要的信息直接发出来,就不用去服务器上看错误日志了,这样简单直接省事。 使用示例 yuziyue 12 Jul 2023 · 1 min read
编程语言 Python描述器Descriptor 一个描述器就是一个实现了三个核心属性访问的方法 __get__() 、__set__() 、 __delete__() 的类。常用作数据合法验证、缓存耗时计算等。 当一个对象的属性被访问时,Python 解释器首先检查该属性是否是一个描述器,如果该属性是描述器,则调用描述器对应的三个方法, yuziyue 12 Jul 2023 · 3 min read
编程语言 Python发送邮件完整示例 下面是以网易 yeah.net 邮箱为例子。from email.header import Header from email.mime.text import MIMEText import smtplib to = ['xxx@qq.com', 'xxx@163.com'] from_address = 'username@yeah.net' from_password = 'xxxxxx' smtp_server = 'smtp.yeah.net' # 纯文本邮件 # msg = MIMEText('我是正文啊。。', 'plain', 'utf-8') yuziyue 11 Jul 2023 · 1 min read
编程语言 Python调用并执行外部Linux命令 执行 bash 命令,调用 linux 命令,执行外部命令 cmd 出入的命令行,可以多个命令,可以管道 cwd 执行命令目录,默认是脚本所在目录 shell 为 True 通过 shell 执行 raise_error 遇到错误是否抛出错误,不抛出错误则通过标准错误返回错误信息 yuziyue 11 Jul 2023 · 1 min read
编程语言 巧用Python命名namedtuple namedtuple 避免了元组不知道每个索引的值代表的含义的尴尬, 给元组的每一个索引指定一个名称,调用时根据名称调用,同时也可以使用原来的下标方式访问,看例子。 yuziyue 8 Jul 2023 · 1 min read
编程语言 Python函数参数的五种形式 二. 函数参数组合使用,以上5中参数都可以随意组合,但是参数定义的顺序必须是:位置参数、默认参数、可变参数、命名关键字参数和关键字参数。注意: 参数的组合使用不建议太复杂,太复杂的话可读性很差。三. 函数参数类型检查,函数的参数可以使用 isinstance() 内置函数来检查。 yuziyue 8 Jul 2023 · 4 min read
编程语言 Python删除字符串中非法字符 有时需要对输入的字符串进行处理,最基本的就是去除非法字符,在Python中可以用如下方法简单实现。第一个参数表示被替换的字符 第二个参数表示用来替换的字符(第二个参数和第一个参数必须个数相同、一一对应) 第三个参数的字符串会被替换成空字符 yuziyue 7 Jul 2023 · 1 min read
编程语言 Python异步非阻塞多种实现方式 Python 回调函数,回调函数的原大概就是下面代码的样子,deal_with 函数是真正执行计算的函数,计算后需要通知调用者计算结果,通过传入的get_result 函数处理计算结果。Tornado 异步非阻塞,同步函数 from tornado.httpclient import HTTPClient yuziyue 7 Jul 2023 · 1 min read
编程语言 深入浅出 Python 异步并发原理 由于线程的线程的数据结构比进程更轻量级,并且同一个进程可以容纳多个线程,所以可以使用多线程解决并发问题。多线程也是有问题的,因为多线程有一个GIL锁:同一时刻一个进程中只有一个进程在运行,并且在线程切换时还资源消耗大,而协程的切换则是在线程内部,所以协程优于线程。 yuziyue 7 Jul 2023 · 13 min read
编程语言 Python 脚本实现 Menu 菜单 在操作系统上执行某些脚本时,会有一些 menu 选择菜单, 如果用 Python 来实现,可以尝试用下面的思路试试,毕竟Python的可读性比bash高的可不是一点点。 yuziyue 6 Jul 2023 · 1 min read