
Python学习
whuzhang16
同学,你这还要多看书啊
展开
-
python装饰器
Python装饰器(Decorator)是一种强大的语法工具,允许在不修改原函数或类代码的情况下,动态地扩展其功能。Python装饰器的核心价值在于,广泛应用于日志、权限、性能优化等场景。其设计模式基于闭包和嵌套函数,通过语法糖实现优雅的代码扩展。合理使用装饰器可显著提升代码的可读性、复用性和可维护性,是Python编程中必须掌握的高级特性。装饰器的主要作用包括代码复用、功能增强、关注点分离、权限控制、性能优化等。原创 2025-04-07 16:55:09 · 328 阅读 · 0 评论 -
matplotlib画polygon, circle
matplotlib画polygon,circle原创 2022-08-01 18:21:54 · 955 阅读 · 0 评论 -
Eigen3ToPython
Eigen3ToPython如果是自己编译这份源码,注意代码存放路径不要有中文。原创 2022-04-21 10:49:09 · 325 阅读 · 0 评论 -
in MergeFromString raise message_mod.DecodeError(‘Truncated message.‘)google.protobuf.message.
在用python引用protobuf编译好的.py文件时遇到报错:File "/home/yany/.local/lib/python2.7/site-packages/google/protobuf/message.py", line 199, in ParseFromString return self.MergeFromString(serialized) File "/home/yany/.local/lib/python2.7/site-packages/google/proto原创 2021-12-15 13:28:35 · 3060 阅读 · 0 评论 -
python微秒时间戳
C++版的实现方式可以写成这样:int64_t inline getTimeInMicroseconds() { struct timeval tp; ::gettimeofday(&tp, NULL); return tp.tv_sec * 1000000 + tp.tv_usec;}其中,timeval的定义是在C++库,路径是/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h中,定义如下:#ifn..原创 2021-12-14 17:48:29 · 2742 阅读 · 0 评论 -
python获取当前路径及父路径
import osprint('#####: ', os.getcwd()) #获取当前工作目录路径print('#####: ', os.path.abspath('.')) #获取当前工作目录路径print('#####: ', os.path.abspath('..')) #获取当前工作的父目录print('#####: ', os.path.abspath('../..')) #获取当前工作的父目录的父目录...原创 2021-07-28 17:08:48 · 1077 阅读 · 0 评论 -
conda安装pytorch速度慢或是失败
很服气,就很服气conda安装pytorch断断续续装了很久,每次都是下载不到10%就报下面的错:CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.5.1-py3.5_cuda10.2.89_cudnn7.6.5_0.tar.bz2>Elapsed: -An HTTP e原创 2021-03-31 18:02:58 · 1054 阅读 · 0 评论 -
docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]].
重启docker服务后再启动容器systemctl restart dockerdocker start 容器原创 2021-01-04 16:08:45 · 310 阅读 · 0 评论 -
ubuntu18.04修改vscode字体
“File -- Preferences -- Settings”打开Settings设置页面:单纯修改字体大小的话,把Font Size改大一些就可以(页面里是18)如果是修改字体样式,点击"Edit in settings.json":"editor.fontFamily": "Fira Code",//后边的引号中写上要设置的字体类型,个人比较喜欢Fira Code "editor.fontLigatures": true,//这个控制是否启用字体连字,true启用,fals原创 2020-12-30 18:29:47 · 7739 阅读 · 2 评论 -
python中的subprocess.Popen()使用
python中的subprocess.Popen()使用原创 2020-12-29 11:03:30 · 230 阅读 · 0 评论 -
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.
报错内容:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied出现问题原因:docker进程使用Unix.原创 2020-12-28 16:43:13 · 167 阅读 · 0 评论 -
国内环境 GitHub 拉取仓库速度慢的缓解方案
第一步: 浏览器打开如下两个网址,找到对应 IP 地址:http://github.com.ipaddress.com/ http://github.global.ssl.fastly.net.ipaddress.com/假设对应 IP 地址分别为 140.82.xx.xxx 和 199.232.yy.yyy第二步: 编辑 hosts 文件sudo vim /etc/hosts加入如下两行:140.82.xx.xxx github.com199.232.yy.yyy .原创 2020-12-22 16:43:40 · 568 阅读 · 0 评论 -
python修改进程名
一般情况下,我们直接启动python程序后使用ps查看,显示的结果为pyton xxx.py,web类应用使用netstat或ss查看显示为python。 太不个性,太一般,很普通,也不太好管理。 我们可以借助第三方库setproctitle来解决这个问题。一、安装pip install setproctitle或者下载源码安装。二、使用import setproctitlesetproctitle.setproctitle("进程别名")导入模块,在程序的入口设置就好了。.原创 2020-12-09 19:25:09 · 4289 阅读 · 0 评论 -
NameError: name ‘defaultParams‘ is not defined
/usr/local/lib/python3.6/dist-packages/matplotlib原创 2020-12-03 10:42:33 · 1722 阅读 · 0 评论 -
ubuntu18.04安装pygame及Index Error: bytes to write exceed buffer size问题解决
sudo apt-get install python-pygameIndex Error: bytes to write exceed buffer sizesudo apt-get --purge remove python-pygamesudo pip install pygame或者sudo pip3 install pygame原创 2020-11-25 11:01:03 · 385 阅读 · 0 评论 -
Python获得时间与星期
report_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) week_dict = {1: '星期一', 2: '星期二', 3: '星期三', 4: '星期四', 5: '星期五', 6: '星期六', 0: '星期天'} d = week_dict.get(datetime.today().isoweekday()) report_time = str(report_time) + ' ' + st...原创 2020-11-19 14:49:27 · 471 阅读 · 0 评论 -
pyinstaller:未找到命令
ubuntu18.04安装pyinstaller成功sudo pip3 install pyinstaller,但是执行命令: pyinstaller -F temp.spec却提示找不到命令网上搜了一些解决方法,主要是路径和下载源码安装,觉得麻烦将卸载重装了sudo pip3 uninstall pyinstallersudo pip3 install pyinstaller再次执行就可以了...原创 2020-11-07 14:07:06 · 3795 阅读 · 3 评论 -
git 新建分支并提交本地代码到远程分支
step1,在本地新建分支git branch newbranchstep2:把本地分支push到远程git push origin newbranchstep3:切换到该分支git checkout newbranchstep4:查看本地修改git statusstep5:添加本地修改git add .step6:commit修改git commit -m 'XXXX'step7:push代码git push origin newbranch完毕.原创 2020-11-07 14:02:13 · 1162 阅读 · 0 评论 -
Ubuntu18.04安装ROS Melodic详细过程(含填坑步骤)
不同版本的ubuntu对应不同版本的ros,1. 设置软件源sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'2. 设置秘钥sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421原创 2020-11-05 16:58:24 · 9947 阅读 · 6 评论 -
用户名不在sudoers文件中,此事将被报告
sudo命令可以让你以root身份执行命令,来完成一些我们这个帐号完成不了的任务。其实并非所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中呢。我们可以通过编辑器来打开/etc/sudoers,或者直接使用命令visudo来搞定这件事情。打开sudoers后,像如下那样加上自己的帐号保存后就可以了。# User privilege specificationroot ALL=(ALL:ALL) ALLlinc ALL=(ALL:ALL) ALL.原创 2020-11-05 12:43:09 · 216 阅读 · 0 评论 -
pyqt控件随窗口大小自适应变化
1.在ui窗体中按需求添加控件并摆好相对位置;2.在ui窗体空白处(不要选中任何控件)点击右键->布局->栅格布局(水平布局、垂直布局等布局方式任选其一)原创 2020-10-30 14:25:37 · 11902 阅读 · 0 评论 -
pyqt5按钮点击时传递参数(通过lambda表达式)
pyqt5中按钮点击事件的响应,常见的是下面的方式:self.btn.clicked.connet(self.click_method)现在想在按钮click的时候能够传递参数,可以借助lambda表达式:self.btn.clicked.connet(lambda: self.click_method(arg))def self.click_method(self, arg): pass...原创 2020-10-29 17:18:33 · 9810 阅读 · 2 评论 -
Python打开文件选择框(pyqt5自带打开文件框功能存在问题)
root = tkinter.Tk() root.withdraw() filename = tkinter.filedialog.askopenfilename(title='选择.nov文件', filetypes=[('Nov', '.nov')], initialdir=(os.path.expanduser(GlobalDefines.case_genera.原创 2020-10-29 17:03:00 · 2228 阅读 · 1 评论 -
pyqt5 状态栏(statusBar)永久显示
在主界面加了一个状态栏,作为简易操作说明,但是点击菜单栏时,不管是否选中菜单栏下的选项,状态栏都会消失。网上给了很多关于永久显示状态栏的方法:self.status = self.statusBar()#状态栏本身显示的信息,第二个参数是信息停留的时间,单位是毫秒,#默认是0(0表示在下一个操作来临前一直显示)self.status.showMessage('显示的信息', 0) 问题就在这,下一个操作前,状态栏信息显示不变,但只要有操作,比如点击按钮,状态栏就会改变或消失。可以采用原创 2020-10-19 16:55:12 · 6291 阅读 · 0 评论 -
pyqt5中Label文字可复制
在给label设置如下方法即可,设置完成后,再选中label上的文字,右键会弹出copyfrom PyQt5.QtCore import Qtself.label.setTextInteractionFlags(Qt.TextSelectableByMouse)原创 2020-10-16 22:27:09 · 3778 阅读 · 0 评论 -
Python根据进程名批量关闭进程
在PyQT窗口退出时,子进程一直退出不彻底,而且多次运行也开启了多个子进程,所以想在退出时批量关闭它们,可以用下面的命令:ps aux | grep 进程名 | awk '{print $2}' | xargs kill -9或者:ps -ef | grep 进程名 | awk '{print $2}' | xargs kill -9上述命令也可以加入Python代码中,在程序结束时调用。...原创 2020-09-24 10:25:37 · 1227 阅读 · 0 评论 -
Python代码启动roscore
打算在程序运行时自动启动roscore,不用在终端手动执行。借助subprocessimport subprocesscmd = subprocess.Popen(['/bin/bash', '-i', '-c', 'roscore'], start_new_session=True)加到程序启动的地方即可。附:在Python代码里关闭进程(如Python相关进程),脚本已经写好了,但是运行之后进程还在,也可以用这种方式:import subprocesscmd =原创 2020-09-23 20:32:29 · 827 阅读 · 1 评论 -
Python2与Python3根据进程名关闭进程(如roscore)
想在Python代码中关闭roscore,所以想找到roscore的进程号,然后再kill。针对Python2import commands if __name__ == '__main__' : p = commands.getoutput("pgrep roscore ") commands.getoutput("kill %s " % p)pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行,它还有一些参数,如-l,-n,需要细究的可原创 2020-09-23 16:49:37 · 828 阅读 · 1 评论 -
PyQt5关闭窗口多线程的退出
问题描述:在主窗口初始化过程中开启新线程socket,socket线程中又开启子线程与客户端socket通信,关闭主窗口时总是不能退出所有线程(客户端是单独开启一个子进程)。解决方案:搜了一下网上的,主要是设置守护进程、重写关闭函数等:设置守护进程:setDaemon(True),这个方法有效果,语句要写在线程start之前:self.your_thread = threading.Thread(target=self.fun, args=(arg1, arg2))# 设置线程为守护原创 2020-09-16 18:24:57 · 9846 阅读 · 6 评论 -
ImportError:No module named ‘自定义module’
写Python程序时,想在一个文件夹的代码中引用另一个文件夹代码里的变量,from ‘另一个文件夹路径’ import ‘另一个文件夹中的类’,提示没有这个module。但其他文件夹(别人写的)都可以找到,查了一下关于Python package和module的知识,发现是__init__.py的原因。补充一下这两点的知识:包相当于c++语言中的namesapce 便于命名管理 同一个包下的不能出现两个相同的名 怎么辨别python中的包和文件夹 很简单 只要是目录下包含__init__.py原创 2020-09-11 16:34:25 · 1917 阅读 · 0 评论 -
PyQT5弹出提示框
from PyQt5.QtWidgets import * def messageDialog(): #核心功能代码就两行,可以加到需要的地方 msg_box = QMessageBox(QMessageBox.Warning, '警告', '文件出现异常') msg_box.exec_()if __name__ == '__main__': messageDialog()...原创 2020-09-09 20:32:51 · 13770 阅读 · 1 评论 -
pycharm中os.environ不能读取环境变量:raise KeyError(key) from None
Ubuntu系统在.bashrc中设置了程序运行所需的环境变量,程序中通过os.environ['变量名']访问,通过终端启动程序没问题,在pycharm中点击图标(绿色三角标志)运行提示“raise KeyError(key) from None”,print打印了os.environ.keys(),发现里面没有bashrc中自己设置的环境变量。网上给的在pycharm的Preference(Mac系统)或Setting(Ubuntu)中,Build,Execution,Deployment--C原创 2020-09-07 18:53:44 · 11103 阅读 · 2 评论