python
文章平均质量分 63
chaos-god
弃我去者昨日之日不可留,
乱我心者今日之日多烦忧。
长风万里送秋雁,对此可以酣高楼。
蓬莱文章建安骨,中间小谢又清发。
俱怀逸兴壮思飞,欲上青天揽明月。
抽刀断水水更流,举杯销愁愁更愁。
人生在世不称意,明朝散发弄扁舟。
展开
-
docker学习:Fedora容器
网上介绍fedora容器非常少,基本都是ubutun容器。fedora容器使用过程还是遇到一些小问题,有必要单独说明下。原创 2022-11-29 00:11:52 · 657 阅读 · 0 评论 -
docker学习:docker基础容器构建
准备一台ubuntu系统,可以是vm也可以实体机。本文的内容是基于vm环境构建。原创 2022-11-24 01:35:04 · 443 阅读 · 0 评论 -
Python学习:python对象转换json字符串
1.问题json是网络传输比较简单易用。python中,json和dict对象可以相互转换,首先我们看下简单的dict对象转换。student = { 'name': 'chaos', 'age': 18, 'school': { 'name': "tsinghua" }}print(json.dumps(student))输出为:{"name": "chaos", "age": 18, "school": {"name": "tsinghua原创 2021-10-03 17:31:17 · 5036 阅读 · 1 评论 -
Python学习:如何试用pytest-mock(2)
1.问题前面我们讨论了pytest-mock,给模块mock的使用方法。当时还列举了两个问题,如何给对象的属性进行mock,以及如何同一个地方进行mock,避免每个测试用例单独mock,我们现在来看看这两个问题。2.方案2.1.给对象属性mock首先我们看下为何会有对象mock的问题。python中不少代码,开发的时候不会指明类型,到了实际执行的时候才会知道用什么类型,因此不能使用import,所以用前面说的对模块mock就行不通了。我们来构造这样一个例子。chaos模块中,继续定义一个Perso原创 2021-09-05 11:46:24 · 636 阅读 · 2 评论 -
Python学习:如何使用pytest-mock(1)
1.问题使用pytest做python代码的测试是很容易的,不过被测试代码对网络、数据库等远程服务有依赖,这种情况该如何快速方便的进行测试。2.方案python的unitest包是支持单元测试的,有mock可以用。并且pytest-mock进行高层次的封装,用起来更加方便。安装包:pip3 install pytest-mock2.1.小试牛刀直接采用类似官方的例子,我们代码中要使用os.getcwd获取当前工作目录。只是我们的代码是在windows系统上,实际代码需要linux下工作,测试代原创 2021-09-05 11:45:29 · 1433 阅读 · 0 评论 -
Python学习:执行系统shell命令
1.问题python可以作为shell替代,代码比较直观,易于维护。 python支持调用外部shell命令。不过,这个问题没有看上去简单,要完美的解决此问题,比较复杂,就连标准库也不见得处理得很好。2.方案2.1.方案一首先最简单的方法就是调用system方法,直接执行系统shell命令,代码如下:import osos.system('ls -l')system主要问题,就是无法获取shell命令的输出,无法进行输入;也没有超时设置,如果外部命令挂死,会直接导致当前进程挂死。2.2原创 2021-08-22 17:34:34 · 3651 阅读 · 0 评论 -
Python学习:scapy库的Packet与str相互转换
1.问题python的scapy库,是构造TCP/IP报文的利器,并且支持asn.1,搞过电路交换协议的人一定会明白基于asn.1协议的描述复杂度。使用中遇到的一个比较麻烦的问题,scapy抓到的Packet如何在网络中传输,如何在使用端还原到Packet类型。2.方案2.1.Packet转换为strPacket转换为str很简单,直接上代码:from scapy.all import *pkts = sniff('eth1', count=1, timeout=5)pkts[0].sho原创 2021-08-08 21:25:14 · 2497 阅读 · 1 评论 -
Python学习:如何使用pandas分析excel数据(续)
1.问题上篇,简单介绍了pandas库的使用,列出了常见操作的方法。本篇并不是继续讲述pandas库的使用,而是通过封装一个Excel类型,讲述如何封装第三方库,及其为何要封装。2.方案2.1.概述Python的第三方库很多,很多库有官方文档,有的库文档齐全,直接使用也没多大问题。一般情况,我都会自己封装起来再使用,因为使用第三方库存在一定的风险。封装的目的,主要有以下几个方面的考虑:封装降低复杂性,我们可能只需要库的部分功能,屏蔽用哪些用不到的功能,防止误用。封装提高可维护性和可替代性。第原创 2021-05-22 18:11:31 · 504 阅读 · 0 评论 -
Python学习:如何使用pandas分析excel数据
1.问题在python中,读写excel数据方法很多,比如xlrd、xlwt和openpyxl,实际上限制比较多,不是很方便。比如openpyxl也不支持csv格式。有没有更好的方法?2.方案更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据确实很方便。本文使用excel的数据来自网络,数据内容如下:2.1.安装使用pip进行安装。pip3 install pandas导入pandas:import pandas as pd下文使用pd原创 2021-05-09 21:40:44 · 3671 阅读 · 23 评论 -
Python学习:M1系统上如何使用pandas
问题目前为止,M1系统上还不能使用pip3安装pandas库,无法使用pandas进行数据分析和处理。虽然网上也有专门适配M1的python环境,但也比较麻烦,不够纯粹。那在M1上,如何使用pandas?方案docker新版本已经支持M1了,我们不妨尝试一下,是否可以用vscode+docker使用pandas。1.安装M1版本的docker访问https://docs.docker.com/docker-for-mac/install/,下载M1版本的docker。2.安装python镜像原创 2021-04-28 22:26:16 · 1836 阅读 · 12 评论 -
Python学习:vscode开发python项目的正确姿势是什么?
问题Python项目,有着Pycharm这么优秀的工具在,其他IDE工具基本都显得有点相形见绌。只是Pycharm社区版不支持远程调试,有些语言也支持不好,比如Markdown就显示很弱。因此,有时候不得不依靠其他IDE工具。这个时候,可以选择vscode。vscode这些年越来越强了,但开发python项目,vscode配置不容易使用,总是遇到这个问题,或者那个问题上,长时间找到办法就搁置了。能否在vscode上,进行优雅的开发python代码,达到或者超过Pycharm那种开发体验?我觉得是能。这两原创 2021-04-22 23:01:19 · 725 阅读 · 4 评论 -
Python学习:如何使用类型注解
问题Python代码写起来很快,但阅读起来,就很抓狂,主要问题就是类型信息丢失,看到一个函数或方法,都不知道如何传递参数,该函数会返回什么结果。只有运气来,才可以看到类型信息。方案Python 3.6版本之后,新增了类型注解特性(type hint),用户标记函数参数和返回值的类型,该特性主要是给人和IDE用的,实际代码执行的时候,并不会有作用,即使传递不期望的类型,依然会执行。接下来,列绝一些常用的类型注解。单一类型注解def add(x : int, y: int) -> int:原创 2021-04-11 22:19:42 · 221 阅读 · 1 评论 -
Python学习:带参数的装饰器
问题前面写了一个统计函数执行时间的装饰器,默认使用print函数打印执行日志。日志打印,不能假设一定会用print,能否使用自定义的日志打印,比如logger方案先看前面提供的exec_time装饰器的代码:import timefrom functools import wrapsdef exec_time(): def decorator(func): @wraps(func) def wrapper(*args, **kwargs).原创 2021-01-01 18:07:28 · 315 阅读 · 1 评论 -
Python学习:json对象快速访问(续)
问题我们再次回到jsonpath的问题,起初使用jsonpath-ng实现快速访问json对象节点。但jsonpath-ng的性能问题,导致这个方法实在是糟糕,无法使用,悲剧的是已经写了很多代码,再用全路径访问json工作量有点太大,有点进退两难。回过头思考,起初我的目的,就是不必要写全路径访问json节点,通过jsonpath只需要写一个节点进行模糊匹配,实现节点访问。实际上该需求并不复杂,并没有用到jsonpath的复杂功能。能不能不用jsonpath,也能实现?幸运的是方案是存在的,而且实原创 2021-01-01 00:11:48 · 593 阅读 · 4 评论 -
Python学习:jsonpath的性能问题
问题前面刚总结了,利用jsonpath可以快速访问和设置json对象节点值的帖子。没想到这么快就打脸了。python的jsonpath居然性能如此之差,简直无法接受。今天其实就是抛一个问题,作为记录,希望后续能够找到解决之道。方案利用python装饰器,可以轻松写一个记录函数执行时间的功能。代码如下:import timefrom functools import wrapsdef exec_time(): def decorator(func): .原创 2020-12-26 23:23:10 · 935 阅读 · 4 评论 -
Python学习:函数类型自动检查
问题python语言是一门易学易用的语言,不过相比起c++、java语言,就是读别人的代码,是比较痛苦的,尤其代码量比较大的情况,更是如此。def add(a, b): return a + bprint(10,20)print('10','20')问题的根本原因,就是python中一切皆是对象,函数丢失了类型信息,读起来相当痛苦,只有执行过程,才比较方便掌握代码。解决方案方法一,类型注释python语言缔造者,也已经看出来了代码中没有类型信息的问题。当下的p.原创 2020-12-25 23:44:07 · 561 阅读 · 0 评论 -
Python学习:基于paramiko的交互式shell
问题我们希望在windows或者linux上,可以使用ssh连接远程服务器,并且能够执行一般的linux命令,同时还要能够有一定交互能力。比如需要切换root用户,输入管理员用户密码等。解决方案Python的paramiko库,可以支持。但实现也有挺多问题需要考虑。主要有以下几点内容:命令执行,能够获取命令结果 命令执行,能够支持指定的预期结果 命令执行,要有超时能力,不能挂死。用法1:ssh = Ssh2Client('127.0.0.1', 22)ssh.connec.原创 2020-12-25 20:16:54 · 1622 阅读 · 2 评论 -
Python学习:json对象快速访问,jsonpath的神奇妙用
概述json对象和xml对象都是树形结构,文本存储,容易理解。但是,构造起来却相当繁琐,嵌套比较深,代码也不好看,难以维护。xml和xpath是一对,很容易联想到json和jsonpath也应该成对出现。jsonpath可以使用得json对象访问变得更加简洁,代码更易维护,避免过多的分支嵌套。幸运的是,jsonpath有规范定义,java和python也都有第三库可以使用。安装jsonpath库jsonpath第三方库,github上有好几个,比如jsonpath,jsonpath-rw,j原创 2020-12-11 21:35:43 · 725 阅读 · 0 评论 -
Python学习:pythonbrew管理多个版本的python
在$HOME目录中管理python安装pythonbrew是受 perlbrew 和 rvm 启发,在用户的$HOME目录中进行python构建和安装自动化的项目。另一衍生版本 : pythonz 。建议使用如下语句下载安装pythonbrew:$ curl -kL http://xrl.us/pythonbrewinstall | bashpyt原创 2013-06-11 00:29:18 · 2849 阅读 · 0 评论 -
Python学习:python33安装lxml扩展库
1、确保已经安装MacPorts软件,可以登陆http://www.macports.org/install.php下载这个软件下载MacPorts-1.9.2-10.6-SnowLeopard.dmg,下一步下一步安装即可。2、登陆MacPorts网站http://www.macports.org/ports.php,在上面找到你想要安装的软件。安装python3.3版本,在原创 2013-11-22 23:11:06 · 1660 阅读 · 0 评论 -
Python学习:MAC下SlickEdit2012,如何使用最新的python版本
1、到官方网站下下载最新的版本:http://python.org/download2、按照mac下通用的程序安装方式,安装python3.3.2后,打开终端程序测试,如下界面: 只有输入python3才可以使用最新安装的版本,如果输入python还是用老版本。3、在slickedit2012新建一个基于python的工程。打开“Python Options”原创 2013-06-11 00:18:33 · 1121 阅读 · 0 评论 -
Python学习:python扩展库lxml学习
这几天一直想找到一个xml库,能够方便搜索,搜索条件能够满足xpath语法规则的。网上有很多xml库,在python下,找到lxml扩展库比较方便。虽然需要手工安装,但lxml却是很方便。windows下安装又傻瓜化的。把一些学习过程中摸索的记录下来,便于后续自己查阅,网上搜到的例子,实在是过于简单,也不适用,我主要查找xml节点,然后修改再保存。原创 2013-11-23 00:13:59 · 2369 阅读 · 0 评论 -
Python学习:selenium2 + python3.3.5 开发环境准备
Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和原创 2015-03-17 22:54:51 · 1743 阅读 · 0 评论 -
Python学习:使用boost c++嵌入python,获取异常信息输出到字符串
使用boost::python,很容易在c++嵌入python,不需要关心python那些c api的复杂性。但有一个问题是python编译出错信息或者异常信息不能重定向字符串里,打印出来,python错误信息默认是输出到stderr的,是基于命令行的。通过文件重定向有点麻烦,需要写一些python脚本,也不直观。通过很长的摸索和搜索,终于找到了下面的方法。 通过以下c++代码,可原创 2014-12-07 22:26:01 · 2974 阅读 · 0 评论 -
Python学习:PyCharm 使用简介(转)
最近由于项目需要,领导要求使用python以方便扩展,没有办法,赶鸭子上架花了2天时间翻完了python的初级教程然后就开始写代码。有一款好的IDE可以帮助我快速上手一门新语言,这里就介绍一下PyCharm这个python的IDE吧。1、安装和首次使用PyCharm 是我用过的python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windows下面都可以用,这点比较好转载 2015-04-05 18:45:44 · 3888 阅读 · 0 评论 -
C++学习:使用libssh2实现交互式shell的ssh2,linux和windows通用
使用ssh2实现shell自动化测试,实际工作中遇到非常多。各种语言都有相应的库可以使用。比如,c/c++语言可以使用libssh2;python可以使用paramkio库等。但这些库网上的帮助,都不是很全,都比较浅显。shell自动化,最基本的三个需求,一个是适合多重类型的操作系统;二是要能够支持交互式shell,比如使用sudo执行时,需要输入密码;三是读数据时要非阻塞的。原创 2015-04-05 16:51:22 · 26073 阅读 · 6 评论 -
Python学习:mac下使用boost.bython扩充python
1、第一步,先要准备boost库,编译库,需要编译python库,我使用python的环境是python2.7。我使用的boost 1.5.7版本。存放在目录为:/Volumes/data/code/c++/boost_1_57_0。boost的编译,网上有一大把。这里就不详细说了。说明:如果你的mac机器 /usr/include头文件很少,你可以使用下面这个命令安装。x原创 2015-08-23 01:36:35 · 3574 阅读 · 0 评论 -
Python学习:使用Eclipse,配置Python开发环境
安装python解释器安装PyDev:首先需要去Eclipse官网下载:http://www.eclipse.org/,Eclipse需要JDK支持,如果Eclipse无法正常运行,请到Java官网下载JDK安装:http://www.oracle.com/technetwork/java/javase/downloads。打开Eclipse,找到Help菜单栏,进入Ins原创 2013-11-22 23:14:09 · 1056 阅读 · 0 评论