![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 60
Xavier Jiezou
Python开发者 | 网络爬虫 | 图像处理 | 计算机视觉 | 人工智能 | 深度学习 | 微信公众号【干货共享菌】 | 微信号【wxhghgxj】 | 邮箱【878972272@qq.com】
展开
-
【Python】解决 pip 开了网络代理之后无法安装包的问题
然而,配置清华源之后,pip 安装的时候就是从清华的镜像仓库来抓取安装包,但是清华的网络会对一些境外的网络代理做屏蔽或过滤,因此导致开了代理之后,pip 就无法安装包了。既然 pip 镜像源(无论还是清华,亦或是阿里)对代理服务器进行了屏蔽,那么我们访问镜像源的时候就不要走代理网络了。临时方案就很简单了,直接把代理关了就行了。但你要安装很多包的话,就很麻烦,得反复的开关代理,推荐下面的永久解决方案。即在代理服务器设置里面,请勿对以下条目开头的地址使用代理服务器,以清华源为例,就是添加。原创 2023-08-17 14:14:01 · 10031 阅读 · 9 评论 -
【Python】获取或修改 Windows 系统中文件的创建时间、修改时间和访问时间(os | win32file)
os.utime 只能更改文件的修改时间和访问时间,而不能更改文件的创建时间。因此,我们这里统一使用 win32file 模块来修改文件的上述三个时间属性。本文介绍如何利用 Python 编程获取或修改这三个属性。然后,鼠标右击查看其时间属性。重新查看时间属性,发现已修改。通过如下代码获取其时间属性。通过如下代码修改其时间属性。首先,创建一个测试文件。原创 2022-09-18 23:37:07 · 4462 阅读 · 3 评论 -
【Python】旋转矩阵与旋转向量的相互转换(OpenCV)
因为任意旋转矩阵仅有 3 个自由度,因此旋转向量是旋转矩阵的一个方便和最紧凑的表示。在全局 3D 几何优化中常用到旋转矩阵和旋转向量的相互转换,例如相机标定、PnP 问题的求解等。本文介绍基于 OpenCV-Python 的互转换实现方法。函数即可实现旋转矩阵与旋转向量的相互转换。通过 OpenCV 提供的。原创 2022-09-12 21:55:30 · 6032 阅读 · 0 评论 -
解决DCNv2在Linux上安装失败的问题
今天同学安装 DCN(Deformable Convolutional Networks,可变性卷积网络)v2的 PyTorch 版本时遇到了很多问题,弄了将近一天也没解决。于是求助笔者帮忙解决,这里记录一下成功的解决方案。尝试了一下克隆仓库并安装,但也是报各种错误,但大部分原因都是 PyTorch 版本太高,高版本中删除了很多 C++ 写的头文件,导致编译错误。安装过程中的提示信息如下:(忽略警告)运行脚本校验安装是否可用:(忽略警告)......原创 2022-08-12 09:49:30 · 4235 阅读 · 3 评论 -
【原创工具 | OpenCV-CamCalib】一个基于 OpenCV 的自动化相机数据采集和标定程序
一个基于OpenCV的自动化相机数据采集和标定程序。系统内置相机地址默认为 0。原创 2022-08-09 15:41:38 · 2197 阅读 · 1 评论 -
【Python】根据 URL 读取网络图片的两种方式(OpenCV)
函数可以从本地磁盘读取图片并进行各种操作,但如何直接根据URL操作网络图片呢?本文介绍其两种实现方式。不过VideoCapture()是以视频的形式读取的,因此我们只需要取其第一帧。imread()函数不能直接读取网络图片,但。我们知道OpenCV提供了一个。...原创 2022-07-31 13:51:48 · 9577 阅读 · 0 评论 -
【Qt for Python】控件显示问题(默认不显示没有父控件的控件)
说这个的意思呢,就是提醒大家在主窗口(MainWindow)中调用对话框(Dialog)时别忘了给对话框设置。最近在学习PythonGUI开发,选择了比较通用的PySid6框架,这里记录一下关于控件显示的问题。,或者直接调用show方法,不然就会出现对话框无法显示的问题。,则当父控件显示后,子控件会自动跟着跟着显示,而无需手动调用。,即父控件,就默认不显示,除非你手动调用该控件的。新建(实例化)一个控件时,若没有指定。接下来,又新建一个按钮控件。如果你新建控件时,指定了。......原创 2022-07-22 15:55:42 · 1048 阅读 · 0 评论 -
【OpenCV】记录cv2.VideoCapture的一个坑
如果RTSP流视频的链接是正确的,那么很好,没有任何问题,访问也很快。为了不一直等待下去,我们需要做一个延时判断,给定一个最大响应时间,如果在该时间内程序仍未执行完成,则立即结束。需要使用cv2.VideoCapture来获取海康摄像机的RTSP流视频。......原创 2022-07-19 13:31:40 · 3326 阅读 · 3 评论 -
【Linux】The virtual environment was not created successfully because ensurepip is not available.
在 Ubuntu 系统上使用 Python3.8 创建虚拟环境时报错:解决方案报错信息中其实已经给了解决方案:当然,如果你不是 root 用户,得加上 sudo:但还是报错:这个是因为 apt 好久没有更新了,更新一下:更新之后继续安装:完美解决!...原创 2022-06-15 21:21:58 · 2343 阅读 · 0 评论 -
【Python】计算文件的MD5、SHA1、SHA256值(校验文件完整性)
从网络上下载大文件时,官网一般都会提供一个MD5、SHA1或SHA256值:很多同学可能会好奇这些东西到底是干嘛的?其实这是用来校验文件完整性的。因为从网络上下载大文件具有不确定性,可能会受很多因素影响,比如网络抖动导致文件下载不完成,文件被恶意篡改等,这些问题都会导致最终下载的文件无法正常使用。本文基于 Python 的内置模块 hashlib 实现文件MD5、SHA1、SHA256值的计算。直接以二进读模式()加载进来,然后计算。针对大文件(500MB~1GB)为了更友好地视觉体验,可以增加一个进度原创 2022-06-01 16:39:03 · 5751 阅读 · 8 评论 -
【PyTorch】使用交叉熵作为语义分割损失函数遇到的坑
引言图像语义分割其实就是像素级别的图像分类。因此,我们可以选择交叉熵作为我们的损失函数。但使用交叉熵的时候,有以下几点是需要注意的。提示输入给模型的数据维度应该是 4 维的:(batch_size,C,H,W),语义分割标签维度应该是 3 维的:(batch_size,H,W);模型预测输出的通道数应该等于语义分割的类别数;语义分割标签图像的像素值应该在 [0,类别数-1] 范围内。如果不在,读进来之后必须进行转换。示例假设语义分割的类别标签有 5 种,原图尺寸为 512x512,数据加载原创 2022-05-31 21:43:17 · 1417 阅读 · 0 评论 -
【Python】读取大文件时显示彩色进度条(rich)
引言为了更友好的用户体验,我们在读取大文件时可以制作一个进度条,以展示文件读取进度,本文是其基于 rich 库的 Python 实现。安装pip install rich样例本文以 900MB 左右的 .tar.gz 压缩文件为例,展示其在读取时进度条的实现方法。方法使用默认进度条样式import tarfileimport rich.progresswith rich.progress.open("test.tar.gz", "rb") as file: with tar原创 2022-05-29 21:19:00 · 5243 阅读 · 1 评论 -
【Python】gevent 中协程池和线程池的简单使用
引言gevent 不仅实现了协程池(gevent.pool.Pool),同时也实现了线程池(gevent.threadpool.ThreadPool),本文简单介绍它们的使用方法。安装pip install gevent用法协程池简单示例(设置最大协程数为 10)import geventfrom gevent import socketfrom gevent.pool import PoolN = 1000# limit ourselves to max 10 simulta原创 2022-05-29 16:58:05 · 2518 阅读 · 0 评论 -
TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file……
问题描述TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible wo原创 2022-05-27 09:27:53 · 21622 阅读 · 22 评论 -
【Python】编程规范与风格指南(Google Python Style Guide)
Python-Style-Guide在谷歌提出的 Python 编程规范上进行了简化 😊,让你快速养成良好的编程习惯 ✍,开发高质量代码 🚀。文章目录Python-Style-Guide1. 背景知识2. 语言规范2.1. Lint2.2. 导入2.3. 包2.4. 异常2.5. 全局变量2.6. 嵌套/局部/内部 类或函数2.7. 推导式和生成式2.8. 默认迭代器和操作符2.9. 生成器2.10. Lambda 函数2.11. 条件表达式2.12. 默认参数值2.13. Properties2.14原创 2022-05-12 20:13:34 · 1366 阅读 · 0 评论 -
【Python】选择正确的字符串累加姿势,速度可以提升数倍
引言在通读谷歌的 Python 代码规范文档中,发现了有意思的有一段话:Avoid using the + and += operators to accumulate a string within a loop. In some conditions, accumulating a string with addition can lead to quadratic rather than linear running time. Although common accumulations of原创 2022-05-12 09:43:33 · 2189 阅读 · 0 评论 -
【Python】基于gevent 轻松实现百万级并发
引言因为研究需要,最近在研究 Python 的异步编程。Python 内置的标准库 asyncio 初次体验感觉很复杂,并且不支持同步编写第三方库,比如 requests。虽然有一个内置的名为 asyncio 的异步库但是又得重新学习接口。好在笔者发现了一个非常好用的第三方库 gevent,该库可以轻松实现基于协程的并发,而无需修改原来的同步代码。你仅仅需要将同步编写的函数使用 gevent 进行封装,就能实现用户级别的显式任务调度。方法简单设计一个模拟实验测试 gevent 的并发效果。使用 ti原创 2022-05-10 21:30:36 · 1380 阅读 · 0 评论 -
ERROR: Can not perform a ‘--user‘ install. User site-packages are not visible in this virtualenv.
项目场景新建了一个 Python 虚拟环境,但在虚拟环境里面使用 pip 安装包时却遇到了错误。问题描述使用命令 pip install requests 安装包时报错信息如下:ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.原因分析因为在虚拟环境中找不到用户目录,所以不被允许使用 --user 参数来安装包的。但我安装的时候也没指定 --user原创 2022-05-08 09:31:31 · 14011 阅读 · 3 评论 -
记录 Poetry 发布包到 pypi 遇到的坑:No suitable keyring backends were found
项目场景使用 Poetry 开发一个 Python 项目。在本地可以正常使用 poetry build 构建包,然后使用 poetry publish 将包发布到 pypi 官网。但是当我将其部署到 GitHub Actions 时,可以正常构建包,但发布包时却遇到了如下问题。问题描述包构建成功了,发布到 pypi 时报错:No suitable keyring backends were found这是我配置工作流的代码:- name: Publish to PyPI e原创 2022-05-04 08:45:59 · 877 阅读 · 0 评论 -
总结 Python 编程中的一些小 Tricks
引言笔者从 19 年开始学习 Python,如今已有 3,4 年。从最基础的 Python 语法,到面向对象编程,如今笔者已经可以独立地完成一个小型 Python 库的开发。今天,笔者将 Python 编程中的一些小 Tricks 做了一下总结,并分享给大家,旨在让您的代码书写更优雅,编程效率更高!技巧连等赋值如何给两个变量赋同一个值?常规的方案是分别赋值:>>> a = 1>>> b = 1>>> a1>>> b原创 2022-05-02 15:08:19 · 1026 阅读 · 0 评论 -
【原创工具 | NetSM】开源跨平台命令行网速监测(纯 Python 开发)
引言NetSM 是笔者原创开发的一款开源跨平台网速命令行监测工具。特在此推荐一波,若觉得好用,可以 Star 一下 😚。演示安装系统需要有 Python 环境,并且已安装 pip 包管理工具。pip install netsm用法用法很简单,使用下面这条命令即可:netsm show提示该工具跨平台,支持 Windows、Linux 和 macOS支持 Python 3.7 及以上版本,3.7 以下版本暂不提供支持本工具是笔者原创开发,欢迎在 GitHub 仓库主页 Star原创 2022-04-29 15:39:18 · 863 阅读 · 0 评论 -
ERROR: Could not find a version that satisfies the requirement xxx (from versions: none)
项目场景$ pip install netsmERROR: Could not find a version that satisfies the requirement netsm (from versions: none)ERROR: No matching distribution found for netsm原创 2022-04-29 08:39:55 · 9972 阅读 · 3 评论 -
记录初次使用 Python 的 Poetry 库遇到的一个坑(安装第三方包时卡住)
项目场景使用 poetry new demo 新建一个项目后,想安装一个依赖包 requests。问题描述但一直卡在如下页面,没有任何反应:$ poetry add requestsCreating virtualenv demo-znJHNgUV-py3.9 in C:\Users\87897\AppData\Local\pypoetry\Cache\virtualenvsUsing version ^2.27.1 for requestsUpdating dependenciesRes原创 2022-04-24 23:04:40 · 5971 阅读 · 0 评论 -
【Python】自然排序(natsort)
引言Python 有个默认的排序函数 sorted,其对字符串的排序是按照 Unicode 编码的大小来的,例子如下:>>> x = ['1', '2', '11', '33']>>> sorted(x)['1', '11', '2', '33']但实际我们想要的结果可能是按照数字大小排列的,该如何实现呢?这里有个名为 natsort 的第三方库给我们提供了解决方案。安装pip install natsort用法>>> from .原创 2022-04-23 12:58:16 · 4120 阅读 · 0 评论 -
【Python】如何使用matplotlib 库正确的显示灰度图像
项目场景我这里有一张名为 camera.jpg 的灰度图像:使用 matplotlib 库读取并显示:import matplotlib.pyplot as pltplt.imshow(plt.imread('camera.jpg'))plt.show()显示结果如下:问题描述如上图,显示的是绿色的图片,而我这里想让它显示原图的那种黑白色调。怎么实现呢?原因分析根据官方文档可知:matplotlib.pyplot.imshow 有一个 cmap 参数,用该参数来控制图像显示原创 2022-04-22 21:36:47 · 9873 阅读 · 1 评论 -
记录部署 streamlit 应用时遇到的一个坑(配置文件中 headless 需设置为 true)
问题描述部署 streamlit 应用失败,日志信息如下:[manager] Processed dependencies![manager] The service has encountered an error while checking the health of the Streamlit app: Get "http://localhost:8501/healthz": dial tcp 127.0.0.1:8501: connect: connection refused[man原创 2022-04-22 11:04:53 · 2523 阅读 · 0 评论 -
记录 splite3 库的一个坑(表名和字段定义不能用占位符?)
项目场景Python 内置 sqlite3 模块的官方文档推荐我们向表中插入记录时使用 ? 充当占位符,然后将数据通过参数传递。而不推荐使用 Python 的字符串拼接操作,说是有 SQL 注入风险。于是我这里创建表的时候也想用占位符这种方式:import sqlite3conn = sqlite3.connect('test.db')cursor = conn.cursor()sql = 'create table ? (?)'table_name = 'student'arg = 'id原创 2022-04-21 15:58:07 · 702 阅读 · 0 评论 -
【Python】基于 sqlite3 的数据库操作(零基础入门教程)
文章目录1. 引言2. 安装3. 教程3.1. 创建和关闭数据库连接3.2. 新建表3.3. 插入记录【增】3.4. 查询记录【查】3.5. 修改记录【改】3.6. 删除记录【删】3.7. 删除表4. 附录5. 概念5.1. 数据类型5.2. 字段定义6. 接口6.1. Connection6.2. Cursor7. 参考1. 引言SQLite 是一个由 C 语言编写的库,它提供了一个轻量级的基于磁盘的数据库,不需要单独开一个数据库服务器,并允许使用 SQL 语句访问数据库。判断是否使用 SQLi.原创 2022-04-21 12:42:08 · 5209 阅读 · 0 评论 -
记录 Beautiful Soup 库的一个坑(获取标签内的文本字符串内容时需要注意空格)
项目场景Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的第三方 Python 库,通常在网络爬虫项目中使用。今天,笔者在使用过程中遇到了一个坑,在此记录,并将解决方案分享给大家。问题描述参考官方文档可知:如果标签里面只有一个子节点,使用 .string 方法可以获得标签内的文本内容。但是,运行下列代码的输出结果却分别是 None 和 ZXC's Blog。from bs4 import BeautifulSouphtml = '''<p> <原创 2022-04-18 14:46:39 · 1238 阅读 · 0 评论 -
解决 Pyspider 在 Windows 系统上安装报错的问题
问题描述Pyspider 在 Windows 系统上直接通过 pip install pyspider 安装报错: ERROR: Command errored out with exit status 10: command: 'C:\ProgramData\Miniconda3\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\87897\\AppData\\Loc原创 2022-04-17 10:16:07 · 4297 阅读 · 0 评论 -
【Python】创建虚拟环境的四种方式(venv | pipenv | conda | poetry)
文章目录引言教程venv安装用法pipenv安装用法conda安装用法总结拓展参考插画引言什么是虚拟环境?虚拟环境是一个 Python 环境,其中安装的 Python 解释器、库和脚本与安装在其他虚拟环境中的那些是隔离的,而且(默认情况下)安装在系统 Python 中的任何库(即作为操作系统的一部分安装的库)也是隔离的。为什么需要虚拟环境?这是由于 pip 的特性决定的,同一个环境下,仅允许安装每个包的一个版本。假设,这里有三个包,分别为:A、B 和 C。A 包依赖于 B 包的 v1.0 版本,而.原创 2022-04-17 09:26:28 · 42276 阅读 · 0 评论 -
【Python】快速创建一个简易 HTTP 服务器(http.server)
引言http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。本文是关于如何使用 Python 的 http.server 模块快速地搭建一个简易 HTTP 服务器的教程。安装Python3 内置标准模块,无需安装。(在之前的 Python2 版本名称是 SimpleHTTPServer)教程用命令行创建http.server 支持以 Python 解释器的 -m 参数直接调用。通过执行如下命令创建一个最.原创 2022-04-16 18:54:35 · 81203 阅读 · 2 评论 -
【Python】执行系统命令
引言Python 编程中可能会需要调用系统命令。本文以一段测试网络连通性的代码来演示如何执行系统命令,并获取输出结果。教程os.systemimport osdef ping(ip): os.system(f'ping {ip}')if __name__=='__main__': ping(input('please enter the ip to ping: '))执行上述代码,输入 baidu.com 并回车,控制台就会打印 ping 结果。os.syste原创 2022-04-15 17:18:20 · 1742 阅读 · 0 评论 -
AttributeError: module ‘pexpect‘ has no attribute ‘spawn‘
问题描述Windows 系统上安装了一个 Python 的第三方包 pexpect,调用包函数的时候报错。>>> import pexpect>>> pexpect.spawn('ping baidu.com')Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: module 'pexpect' has no att原创 2022-04-15 13:30:50 · 2117 阅读 · 0 评论 -
【Python】基于 Pillow 的图像处理(零基础入门教程)
文章目录1. 引言2. 安装3. 教程3.1. 使用 Image 类3.2. 读取和保存图像3.2.1. 将其他格式的图像转换为 JPEG 格式3.2.2. 创建 JPEG 缩略图3.3. 裁剪、粘贴及合并图像3.3.1. 裁剪图像3.3.2. 粘贴图像3.3.3. 合并图片3.3.4. 划分和合并波段3.4. 几何变换3.4.1. 缩放和旋转图像3.4.2. 翻转图像3.5. 颜色变换3.6. 图像增强3.6.1. 像素点操作3.6.2. 高级图像增强3.7. 图像序列3.7.1. 读取序列3.7.2.原创 2022-04-14 19:37:57 · 2724 阅读 · 1 评论 -
ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed
项目场景使用 Python 的 plotly 库进行可视化绘图:import plotly.express as pxfig = px.bar(x=['a', 'b', 'c'], y=[1, 3, 2])fig.show()问题描述运行代码报错:ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed解决方案更新 nbformat 库:pip install --upgra原创 2022-04-12 09:48:10 · 7499 阅读 · 3 评论 -
【Python】图像反转/反色的三种方法(pillow)
引言图像反转(反色)是将图像的灰度值反转,若图像灰度级为 256,则新图的灰度值为 255 减去原图的灰度值。本文介绍了使用 Python 的 pillow 库进行图像反转(反色)的三种方法。安装pip install pillow方法方法 1🙂使用 point() 方法对图像所有像素值进行运算,并返回结果。from PIL import Imagedef invert_color(fname): im = Image.open(fname) im_inverted .原创 2022-04-11 16:40:05 · 13810 阅读 · 7 评论 -
【Python】遍历文件夹下的所有文件(glob)
引言若文件夹下没有子文件夹,则遍历其下文件的最好方法是 os.listdir()。但如果文件夹下有子文件夹,并且还想用正则匹配的话,使用 Python 内置标准模块 glob 是最好的选择。安装不需要安装,Python 内置标准模块。用法glob 模块可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果。此外,glob 还支持三种正则匹配模式:*:匹配 0 个或多个字符?:匹配单个字符[]:匹配指定范围内的字符,如 [0-9] 匹配数字,[a-z] 匹配.原创 2022-04-03 17:04:27 · 9786 阅读 · 4 评论 -
GDAL 安装教程(Python)
引言本文介绍 GDAL(Geospatial Data Abstraction Library,空间数据抽象库)的 Python 版本安装教程。简介GDAL 是用于栅格和矢量地理空间数据格式的开源转换器。向调用应用程序提供所有受支持格式的单个栅格抽象数据模型和单个矢量抽象数据模型。它还附带了各种有用的命令行实用程序,用于数据转换和处理。安装Windows转到这里下载 whl 格式的安装包如何选取合适的安装包?安装包命名规则,以 GDAL‑3.4.1‑cp310‑cp310‑win_原创 2022-03-03 17:28:32 · 43474 阅读 · 18 评论 -
【Python】将控制台输出保存至文件(loguru)
引言编写 Python 程序代码的时候,我们通常使用内置的 print() 函数实现必要信息在终端控制条的打印输出。但当需要输出的信息过多时,或为便于之后的查找,除直接在控制台输出外,将其保存于本地文件中不失为一个好的选择。今天将大家如何通过第三方库 loguru 来代替 print() 记录日志,实现将控制台输出保存至文件。简介loguru 是一个 Python 的第三方库,其功能是记录日志。日志是每个程序的基础,可以简化调试(debug)过程。养成良好的记录日志的习惯,是每个资深程序员的必备素养。原创 2022-03-01 22:38:33 · 7065 阅读 · 0 评论