Python
文章平均质量分 55
LeoHsiao1
这个作者很懒,什么都没留下…
展开
-
今天开始,ubuntu 18.04 bionic 主机不能从 ppa:deadsnakes 仓库下载 Python 包
ppa:deadsnakes 仓库今天停止维护旧版本 Ubuntu ,删除了针对 Ubuntu bionic 18.04 的所有 Python 预编译包。2023年6月6日 官方公告因此主机操作系统是 Ubuntu 18.04 bionic 的用户,不能从 ppa:deadsnakes 仓库下载 Python 包。而主机操作系统是 Ubuntu 20.04 focal、Ubuntu 22.04 jammy 的用户,可以继续从 ppa:deadsnakes 仓库下载 Python 包。原创 2023-06-06 16:28:37 · 1143 阅读 · 0 评论 -
Jenkins 导出、导入 Job Pipeline
通过 Python 脚本导出、导入 Jenkins 的 Job 配置原创 2022-07-22 15:53:57 · 4893 阅读 · 4 评论 -
Python 3.10 版本号引发的 bug
2021年10月,Python 的 3.10 版本正式发布。但之前的 Python 3.6、3.7、3.8、3.9 子版本都为个位数,程序员可能习惯了这种版本格式,因此编写涉及版本号的代码时,未曾考虑到 3.10 版本。本位列举一些相关bug,已在笔者的旧代码中出现,需要修复。版本号为数值类型?有的代码会将版本号保存为数值类型,便于比较大小:>>> 3.8 < 3.9 # 以前可以这样比较版本号True>>> 3.8 < 3.10 #原创 2021-10-27 23:38:18 · 1422 阅读 · 2 评论 -
Django admin 增加只读的详情页面
问题在 Django admin 页面点击一个条目时,会显示其详情页面。原理:详情页面的 URL 总是 <path:object_id>/change/ ,如果用户只有查看权限( has_view_permission )则将所有字段显示成只读形式,如果用户有修改权限( has_change_permission )则将字段显示成可以修改的形式。对应的源码:# django/contrib/admin/options.pyclass ModelAdmin(BaseModelAdmin)原创 2020-11-25 16:21:59 · 1347 阅读 · 2 评论 -
修改 unittest 发现测试方法的规则
文章目录代码运行效果unittest 能自动发现并执行测试用例,规则如下:首先指定要查找的目录(默认是当前目录)。如果子目录属于 Python 包,则也加入查找范围。然后在该目录下查找名称匹配 test*.py 的文件。接着在该文件中查找继承 unittest.TestCase 的类,最后查找该类中名称以 test 开头的方法,作为测试用例来执行。为了发现不是以 test 开头的测试方法,乃至更灵活地匹配,本文定义了一个继承 unittest.TestLoader 的子类。代码impo原创 2020-08-29 16:11:09 · 482 阅读 · 0 评论 -
用 Python 的 difflib 模拟 GNU diff 的输出
文章目录代码效果演示项目中需要在不同操作系统上使用 GNU diff 命令,因此用 Python 自带的 difflib 库模拟它的输出格式。代码import difflibimport redef diff(file1, file2, encoding='utf-8'): """ Simulates the output of GNU diff. You can use `diff(f1, f2)` to simulate `diff -w f1 f2` ""原创 2020-08-29 14:04:38 · 299 阅读 · 0 评论 -
主动显示 Django Admin 的日志表 django_admin_log
Django admin 本身会对用户在 admin 页面上作出的所有修改操作记录日志,存储在数据库的 django_admin_log 表里。如下:但是在 admin 页面中并没有显示日志表。为了主动显示该日志表,笔者在 admin.py 中加入了如下类:from django.contrib import admin@admin.register(admin.models.LogEntry)class LogEntryAdmin(ImportExportModelAdmin):原创 2020-07-31 17:49:25 · 4756 阅读 · 4 评论 -
用 jenkinsapi 抓取 Jenkins 的构建历史
写个Python脚本,抓取Jenkins所有Job的构建历史,保存为一个 xlsx 表格,以便统计。"""用法:填写登录Jenkins的URL、账号、密码pip install jenkinsapi openpyxlpython fetch_jenkins_build_history.py"""import jenkinsapiimport openpyxldef get_b...原创 2020-04-10 17:38:55 · 3666 阅读 · 0 评论 -
用Python实现中文的正则替换、调用元素组
笔者需要批量修改一些文件中的汉字,因此调研正则替换的工具,试用后发现:VS Code可以正则替换、调用元素组、处理中文字符,如下:但是它批量处理多个文件时是基于另一个正则引擎,不能处理中文字符。Notepad++与之类似,但是处理多个文件时还需要手动打开,比较麻烦。sed命令可以正则替换、调用元素组、批量处理多个文件,但是不能处理中文字符。如下:[root@Centos ~]# ech...原创 2020-01-19 11:55:07 · 1447 阅读 · 0 评论 -
Python各版本的差异总结
文章目录Python2与Python3Python2系列Python3系列Python3.4Python3.5Python3.6Python3.7Python3.8Python的版本主要分为 2.× 、 3.× 两个系列。- Python3计划每年发布一个新的子版本,一次只增加一两种新语法。- 使用时当然选择越新的Python版本越好,版本越老的代码越难维护。- 维护老版本的代码时,需要了解各版本之间的主要差异。有时看到一些代码的语法特点,可以大致猜出它是什么版本。原创 2019-11-16 19:19:07 · 61598 阅读 · 14 评论 -
Python字符串编码格式的总结
编码格式chardet模块数据交换格式str与bytes字符串常量编码格式以下编码格式是基于某种字符集,规定了每个字符存储时的二进制值是什么。ASCII码:最基本的字符集,总共有128个字符,用一个字节存储一个字符。比如字母’A’存储时的二进制值是0100 0001。Unicode(统一码、万国码):给多国语言的字符规定了唯一编号(但并没有规定它们存储时采用什么二进制值)。...原创 2019-10-30 20:36:16 · 2827 阅读 · 0 评论 -
使用xadmin2,自定义Action和message
xadmin:Python的第三方库,用作Django的插件,提供了更美观的admin页面。使用时基本不必修改Django项目的原本代码,主要是针对admin.py做出改动。用法安装:pip install xadmin2在settings.py的INSTALLED_APPS[]中加入’xadmin’和’crispy_forms’。如下: ```python INSTALLED...原创 2019-10-09 17:40:25 · 952 阅读 · 0 评论 -
Python使用OAuthLib库进行第三方登录
OAuthLibOAuth:一个用于授权的API标准。可以实现常见的第三方登录。常用的版本是OAuth2,它不兼容OAuth1。OAuth的目的是:用户想通过平台A的账号直接登录第三方应用,第三方应用想得到用户的token,从而有权限访问用户在平台A上的某些资源(比如用户名、邮箱)。笔者认为,OAuth的主要难点是怎么构造请求参数、哪些参数是必要的。就算勉强实现OAuth了,也不怎么规...原创 2019-09-27 23:54:13 · 4277 阅读 · 0 评论 -
Python两行代码生成随机密码
>>> import os, base64>>> base64.b64encode(os.urandom(12))b'gA8Ecm1DZkiyJ0V3'原理:用 os.urandom() 随机生成 n 个字节,再通过base64转码得到 n*4/3 个字节。结果每个字符的取值范围为:26个大写字母、26个小写字母、10个数字、2个特殊字符 + / ...原创 2019-07-22 15:31:15 · 282 阅读 · 0 评论 -
将Python的嵌套字典变成一维,以便urlencode
Python urlencode()处理嵌套字典出错Python的urllib.parse提供了urlencode()方法,可以直接将字典转换成URL字符串。但是使用时发现它只能处理一维字典,转换嵌套字典时就会出错。如下:from urllib import parsepayload = {"status": 200, "body": {"id": 1, ...原创 2019-07-19 18:48:51 · 1793 阅读 · 4 评论 -
解决 pip3.4 install mysqlclient 报错
尝试在一个centos容器中使用python3.4、pip3.4,安装mysqlclient,反复遇到报错:刚开始,执行pip3.4 install mysqlclient时报错:OSError: mysql_config not found----------------------------------------Command "python setup.py egg_info...原创 2019-06-24 15:08:19 · 1955 阅读 · 0 评论 -
用Python一步读写csv、xlsx表格
需求代码测试源代码需求python的内置库csv提供了读写csv表格的方法,第三方库openpyxl 提供了读写xlsx表格的方法。不过,为了避免每次调用这些库时都要回忆其用法,笔者将基本的读写操作封装成函数——通过python的list类型直接读写csv、xlsx表格文件,不需考虑格式等细节。代码def read_csv(filename, *args, **kwargs): ...原创 2019-04-10 19:34:05 · 1517 阅读 · 0 评论 -
用Python自定义一个时钟类、定时任务类
设计思路最初,因为使用time模块显示日期时,每次都要设置时间字符串的格式,挺麻烦,但还是忍了。但后来,在处理多线程任务时需要实现定时控制的功能,更麻烦,终于决定自己...原创 2019-03-11 20:20:47 · 1804 阅读 · 0 评论 -
Python递归遍历目录树,并记录异常
比较os.listdir()与os.walk()查找所有文件查找并筛选文件关于路径分隔符 / 和 \用os.listdir(path)可查询path目录下的所有文件,用os.walk(path)可查询path目录及其子目录下的所有文件。但是os.walk()不能控制遍历文件树的深度,而且默认会忽略发生的异常,把没有访问权限的目录直接判定为空目录。原创 2019-03-11 17:53:22 · 1405 阅读 · 0 评论