
Python
溺阳
.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mac环境下安装pysvn
可以从下载页下载对应版本的pysvn:https://pysvn.sourceforge.io/downloads.html之后双击打开安装即可,不需要再用pip安装。需要注意的是,如果安装时提示chdir失败,而后发现/Library/Frameworks/Python.framework路径不存在,则可能是python安装路径有问题,重新安装python可解决此问题。另外,摘录python官方文档中的一段话:Apple 提供的 Python 版本分别安装在 /System/Library/F原创 2021-11-09 19:13:49 · 920 阅读 · 0 评论 -
python mock的简单使用
先记录今天用到的,以后再整理。假设要测试的方法:def target(): wb = openpyxl.load_workbook('test') ws = wb['sheet'] ws.values ...可以看到,target中使用了openpyxl读取excel文件,然后处理,测试的时候不想再读取文件了,需要mock下openpyxl.我需要先创建一个类,要求支持以[]的方式读取值,而且返回的values必须是一个iterator,每一项是个元组:class原创 2021-02-06 22:30:38 · 421 阅读 · 0 评论 -
google风格docstring中同时返回多个值(一个元组)的情况
白天在statckoverflow上看到的一种格式(原链接不找了):def say_hello(name='world', age=2): """say hello to someone Say hello to the people who have the name you given. Args: name (str): The people's name you want to greet. world by default. Retu原创 2020-12-25 21:02:52 · 485 阅读 · 0 评论 -
Sphinx根据google风格docstring生成文档
安装Sphinxpip install sphinx使用1. 假设存在如下test.pydef say_hello(name='world'): """say hello to someone Say hello to the people who have the name you given. Args: name (str): The people's name you want to greet. world by default. "原创 2020-12-25 20:42:54 · 1789 阅读 · 0 评论 -
Django ORM获取字段的verbose_name
假设存在如下模块:class Article(models.Model): title = models.CharFiled("文章标题", max_length = 50) ...获取title字段的verbose_name:Article._meta.get_field('title').verbose_name若要获取Article类的verbose_name可直接用:Article._meta.verbose_name参考:https://www.cnblogs.原创 2020-12-20 21:11:42 · 1415 阅读 · 0 评论 -
vscode设置Python虚拟环境
1. 查看虚拟环境位pipenv pipenv -venvconda conda env list2. 将虚拟环境路径加入vscode配置文件:2.1 按下快捷键ctrl + shift+ p, 输入settings,打开Open Sttings(JSON)2.2 将之前得到的Pipenv环境路径添加进去“python.venvPath”: “C:\path\.virtualenvs”3. 重启4. 选择虚拟环境按下ctrl + shift +p打开命令面板, 输入Pyth转载 2020-09-19 11:53:52 · 2943 阅读 · 1 评论 -
Python装饰器
文章目录一、装饰器的实现二、装饰器到底干了什么三、有多个装饰器时,装饰器对函数的包装顺序四、装饰器的应用一、装饰器的实现这个问题可以参考廖老师的文章,很详细了,此处只简单举例,不做详细介绍。文章链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017451662295584def log(f): def wrapper(*args, **kw): print("log") return f(*args原创 2020-08-30 21:05:47 · 405 阅读 · 0 评论 -
使用Python暴力破解压缩文件密码
有一个加密的压缩文件,只记得密码前缀,但知道结尾是4位数字,想用Python暴力破解下。刚开始想用Python标准库zipfile实现,先创建个密码为password的压缩文件test来测试:from zipfile import ZipFilezf = ZipFile("test.zip", "r")zf.extractall(pwd="password")发现错误:TypeEr...原创 2020-05-07 21:58:45 · 1910 阅读 · 0 评论 -
使用PyPDF4和PIL修改PDF文件中的图片
继上篇从PDF中提取图片数据之后,我们看如何使用PIL修改图片并写入到PDF文件。先放两个相关链接:使用PyPDF4提取pdf文件中的图片PIL从内存中加载图片先放代码:import PyPDF4from io import BytesIOfrom PIL import Image, ImageDrawdef covertImg(bimg): img = Image.o...原创 2020-04-06 17:22:00 · 1746 阅读 · 0 评论 -
使用PyPDF4提取pdf文件中的图片
首先,打开pdf文件, 检查是否加密:import PyPDF4pdf = PyPDF4.pdf.PdfFileReader("filename")pdf.isEncrypted如果pdf.isEncrypted返回False,说明未加密,可以继续操作;若返回True,则需要使用pdf.decrypt(password)解密后才能操作。其次,找到图片所在页,使用pdf.getPage(...原创 2020-04-06 13:58:08 · 4332 阅读 · 2 评论 -
isinstance的一个坑
在使用unittest的时候,用到了assertIsInstance方法,该方法调用了isinstance方法,现有两个文件中的两个类:# test/c/a.pyclass A: pass# test/c/b.pyfrom a import Aclass B(A): pass其中目录结构如下:test |--c |--__init__.py ...原创 2020-01-05 11:02:07 · 431 阅读 · 1 评论 -
python调试第三方模块
有时候想知道某个功能是怎么实现的,就需要阅读源码了,调试是个好东西。但直接加断点调试,却跳转不到模块里。解决方案:把要调试的模块整个复制到项目下,再进行调试。这里使用vscode 以unittest为例:将整个unittest模块复制到当前工作目录下加断点,F5调试单步执行,可以看到直接跳转到main.py了,成功。...原创 2020-01-04 22:43:37 · 917 阅读 · 0 评论 -
SQLite DateTime type only accepts Python datetime and date objects as input.
publishtime = db.Column(db.DateTime, default=datetime.datetime.utcnow())或在实例化时传入:note1 = Note(publishtime=datetime.datetime.utcnow())就好啦。如果要传入本地时间可以用datetime.datetime.now()...原创 2019-12-15 18:04:21 · 2762 阅读 · 1 评论 -
python:# noqa
看flask源码时发现好多import后面都有# noqa注释,去查了下,是使用flake8进行代码检查时,不检查那一行的意思。在vscode中试了一下,使用pylint进行代码检查时报错:换成flake8:不提示错误了,去掉注释:...原创 2019-12-09 09:39:19 · 3851 阅读 · 0 评论 -
python的另一种打印方式:pprint
如果要打印的数据是数组或者字典,结果往往是堆成一滩,非常不好辨认,这时候用pprint就好啦。话不多说,上代码:from pprint import pprintdata = [ {'cover': 'https://img3.doubanio.com/view/subject/l/public/s29871185.jpg', 'info': '马薇薇 / 黄执中 / 周玄毅 / 邱晨 ...原创 2019-11-26 22:29:44 · 313 阅读 · 0 评论 -
selenium无头模式(无界面启动)
selenium的无头模式是通过向浏览器传入参数实现的。对chrome浏览器和firefox设置大体相同。阅读源码发现,Options类里有个_arguments数组,每次调用set_argument都是向该数组中append一个字符串。设置的参数和具体的浏览器有关。对Chrome浏览器设置from selenium import webdriverfrom selenium.webdri...原创 2019-11-26 16:35:41 · 10257 阅读 · 1 评论 -
使用xpath获取指定标签下html内容
通常使用xpath我们直接定位到标签后, 使用/text() 或 //text()来获取标签对之间的文本值,但特殊情况下我们也需要获取标签本身含文本值, 操作如下:文件为html, 标签对结构如下:<table id='1h'> <tr> <td>Row value 1</td> <td>Row value...转载 2019-11-19 11:04:27 · 3105 阅读 · 0 评论 -
python使用系统剪贴板进行复制粘贴
一、使用pyperclip首先使用pip进行安装:pip install pyperclip使用起来也很简单:In [1]: import pyperclipIn [2]: pyperclip.copy('hello') # 将hello复制到剪贴板,复制的内容可使用ctrl+v粘贴In [3]: pyperclip.paste() # 将剪贴板的内容粘贴下来Out[3]:...转载 2019-10-22 15:52:08 · 6075 阅读 · 1 评论 -
Python创建文件夹或目录
在python中创建文件夹或目录有两种方式:一、os.mkdiros.mkdir只能创建叶子目录,比如有已存在的目录\user,os.mkdir只能在user下创建文件夹,而不能创建中间目录,如\user\ubuntu(不存在)\test。判断是否是文件夹,可以用os.path.isdir比如我user目录如下:-rw-r--r-- 1 T005 197121 0 10月 12 10:...原创 2019-10-12 12:54:08 · 2406 阅读 · 0 评论 -
collections.deque
和list比较list可以作为栈和队列使用,但用作队列时效率要低一些,可以使用标准库中提供的deque代替。deque和list类似,都具有append,clear,copy,count,extend,index,insert,pop,remove,reverse等方法,用法也和在list中相同。相较于list,deque多了appendleft,extendleft,popleft和rot...原创 2019-08-20 14:12:54 · 526 阅读 · 0 评论 -
python将时间戳转换为指定时区时间
直接上代码from datetime import datetime, timedelta, timezone# 要转换的时间戳ts = 1566474480# 参数根据要转换的时区来确定,时区是UTC+2 时hours=2, UTC-3时hours=-3td = timedelta(hours=2)tz = timezone(td)dt = datetime.fromtimes...原创 2019-08-22 14:00:39 · 12278 阅读 · 1 评论 -
PyQt5改变Widget背景和对齐方式
一、改变样式要改变一个窗口小部件的样式,我们可以选择使用样式表。样式语法和CSS相同,如改变QLabel的背景色,可以直接针对一个小部件使用:l1 = QLabel()l1.setStyleSheet("QLabel{background-color:red}")l1.setText("L1")也可以直接在全局设置,这样所有对应部件都会应用该样式:app = QApplication...原创 2019-09-07 15:19:11 · 1768 阅读 · 0 评论 -
PIL从内存中加载图片
最近有个需求是从网上得到图片后直接用PIL打开进行修改,看了PIL.Image里没有相应的方法,试了下用open打开文件,再用Image.open打开,没有报错。>>> f = open('2019.jpg', 'rb')>>> f<_io.BufferedReader name='2019.png'>>>> im = Im...原创 2019-09-12 10:48:30 · 3537 阅读 · 0 评论 -
Python负数求模运算
在StackOverflow看到一个问题,即从一个列表中取出一个数,如果这个数小于0,则循环加1.5,直到它大于0。抛去上述代码中的错误不说,有个大神给了代码,其中一行是:y[i] %= 1.5做了几个测试:可以看出结果是对的,but why?去查负数求模,看到这个,https://blog.youkuaiyun.com/hk2291976/article/details/527...原创 2019-10-08 13:08:50 · 673 阅读 · 0 评论 -
pymysql创建数据库
cursor里的execute方法是可以执行所有mysql语句,如:In [81]: cursor.execute("create database datastats")Out[81]: 1In [82]: cursor.execute('show databases')Out[82]: 17In [83]: cursor.fetchall()Out[83]:(('inform...原创 2019-08-09 16:14:49 · 2269 阅读 · 0 评论