![](https://img-blog.csdnimg.cn/20191123211357176.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
Python 开发相关
真的只是略懂而已
随便写写,写得不好请多多指教
展开
-
Anaconda 创建 32 位 Python 环境
我安装了 64 位的 Anaconda,所以在创建环境时,默认安装的 Python 版本是64 位。但是如果我想安装 32 位的 Python 该怎么操作呢?首先进入 32 位模式,set CONDA_FORCE_32BIT=1,然后再创建环境默认就是 32 位的 Python了。使用 conda info 可查看该环境的详细信息。恢复 64 位模式,使用命令 set CONDA_FORCE_32BIT=0 就可以了。...原创 2020-07-21 13:35:22 · 13578 阅读 · 6 评论 -
pipreqs 一键导出、安装依赖包的好帮手
pipreqs 功能pipreqs 基于 *.py 文件中 import 生成 pip requirements.txt 文件,然后 pip 就可以一键安装。应用场景我在我的电脑上写了一个程序,分享给其他人用。但是他们电脑上没有安装相关的包,所以就无法运行。要是我自己去找依赖了哪些包,然后一个一个告诉他们,就太不方便了,所以就有了 pipreqs。使用方法安装 pipreqspip install pipreqs在项目的根目录下运行命令pipreqs ./ --encoding=utf8原创 2020-07-17 14:22:05 · 3004 阅读 · 1 评论 -
pip 查看某个包有哪些版本
输入 pip install xxx==,例如:pip install PySide2==得到输出:Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simpleERROR: Could not find a version that satisfies the requirement PySide2== (from versions: 0.0.0a1, 5.11.0, 5.11.1, 5.11.2, 5.12.0, 5.12.1, 5.1原创 2020-07-16 14:17:09 · 19970 阅读 · 4 评论 -
Python partial 函数
问题用 PySide2 进行界面编程,点击某个按钮时需要触发某个函数,并且给这个函数传递我所点击按钮上面的文字。btn.clicked.connect(my_func)def my_func(text): # do something print(text)但是 connect 函数只能接收一个参数,就是被触发的函数。那触发 my_func 函数时,怎么给这个函数传参呢?解决办法我们要用到 partial 函数来构造一个新的函数,对原函数进行改造。partial 函数可以对一个函数的参数原创 2020-07-15 11:50:42 · 408 阅读 · 0 评论 -
serial.serialutil.SerialException: ClearCommError failed (OSError(9, ‘句柄无效。‘, None, 6))
问题描述:在主线中开了一个子线程,并且子线程和主线程共享一个串口实例。我就让子线程向串口发送数据,结果就报错:serial.serialutil.SerialException: ClearCommError failed (OSError(9, '句柄无效。', None, 6))原因:主线程开启子线程后,就接着往下执行,此时主线程和子线程处于并行状态。而我在主线程中有一个关闭串口实例的操作,子线程有使用串口实例的操作。如果主线程先关闭串口实例,子线程后使用串口实例,就会导致这样的错误。解决办法:原创 2020-07-14 20:24:48 · 4334 阅读 · 2 评论 -
Python 求补码
## 由十进制得到二进制补码# 系统会先将 -10 转成补码,然后直接与后面的二进制进行与操作# 就得到 -10 的补码了#str = "{:b}".format(-10 & 0b1111111111111111)print(str)输出:1111111111110110原创 2020-07-14 11:17:17 · 4562 阅读 · 2 评论 -
Python 字符串分割
用 split() 函数,默认按空格进行切分(不管两个单词中间隔多少个空格都可以),返回切分后的字符串列表。str = "aa bbbbb ccc d"str_list = str.split()print(str_list)输出结果:['aa', 'bbbbb', 'ccc', 'd']...原创 2020-07-13 20:46:24 · 323 阅读 · 0 评论 -
AttributeError: module ‘google.protobuf.descriptor‘ has no attribute ‘_internal_create_key‘
原版本:protobuf 3.6.1进行升级:pip install --upgrade protobuf升级后就不报错了。原创 2020-07-12 15:17:47 · 10374 阅读 · 4 评论 -
Python 文件头注释
shebang# encoding:utf-8# encoding:utf-8 是注释,但 python 看到这句话就知道了接下来应该用 utf-8 对该 *.py 文件进行解码了。#!/usr/bin/python如果直接采用 python file.py 的方式运行脚本的话,有没有 shebang 都无所谓,因为我们自己直接指定了该脚本的解释器,即 python。通常我们认为 #!/usr/bin/python 采用了绝对路径的写法,即指定了采用/usr/bin/python 解释器来执行该脚原创 2020-07-09 13:54:36 · 617 阅读 · 0 评论 -
Python 获取 CPU 序列号
import wmic = wmi.WMI()# CPU序列号for index, cpu in enumerate(c.Win32_Processor()): print("CPU {0} 序列号:{1}".format(index, cpu.ProcessorId.strip()))原创 2020-07-08 11:15:01 · 2432 阅读 · 0 评论 -
Python for 循环获取 list 元素的索引和值
name = ['apple', 'xiaomi', 'huawei']for index, value in enumerate(name): print(index, val)原创 2020-07-08 11:14:05 · 15083 阅读 · 0 评论 -
Python 设置子线程的名字
使用 setName() 函数可以设置子线程的名字self.polling_timer = Timer(0, self.poling)self.polling_timer.setName("polling_start_timer")self.polling_timer.setDaemon(True)self.polling_timer.start()原创 2020-07-08 10:05:21 · 1459 阅读 · 0 评论 -
Python 强制停止子线程
Timer 一般会设置一个间隔时间,然后才开一个子线程执行需要执行的函数。cancel() 函数只能取消还未开始执行的 Timer,也就是取消该 Timer。如果 Timer 已经开启子线程执行函数了,用 cancel() 函数 是不能停止子线程执行的,子线程会一直执行,直到结束。使用下面这个函数强制停止子线程:import ctypesimport datetimeimport inspectdef stop_thread(thread): tid = thread.ident原创 2020-07-08 09:27:28 · 2724 阅读 · 1 评论 -
Python 查看当前线程数量及名字
import threadingimport timedef test1(): for i in range(5): print("子线程1:%s" % i) time.sleep(1) # 如果创建Thread时执行的函数,函数运行结束意味着 这个子线程结束...def test2(): for i in range(5): print("子线程2:%s" % i) time.sleep(1)if原创 2020-07-07 19:36:43 · 10013 阅读 · 0 评论 -
Python 类变量
class Company: count = 0count 是 Company 类成员变量,在第一调用 Company 时初始化。# 第一次调用n = Company.count原创 2020-07-06 17:06:04 · 129 阅读 · 0 评论 -
Python *args **kwargs
args:argumentskwargs:key word arguments*args:表示接收 0 or n 个参数**kwargs:表示接收 0 or n 个关键字参数*args 必须放在具体形参的后面,**kwargs 必须放在 *args 的后面。原创 2020-07-06 16:59:27 · 126 阅读 · 0 评论 -
Python import 时查找路径顺序
在该文件所在目录搜索该模块(会进入子目录搜索吗?)在环境变量 PYTHONPATH 中指定的路径列表中依次搜索在 Python 安装路径的 lib 库中搜索原创 2020-07-05 21:24:40 · 1320 阅读 · 0 评论 -
Python cp36 cp 什么意思?
cp 代表 CPython,表示用 C 语言写的 Python 解释器版本。原创 2020-07-03 10:36:57 · 8163 阅读 · 0 评论 -
Python 子线程 daemon
如果把子线程为 daemon,那么主线程退出时会立即结束子线程,整个进程结束。如果子线程不设置为 daemon,那么主线程退出时会等待子线程,子线程没有结束,整个进程也不会结束。原创 2020-07-03 10:30:34 · 351 阅读 · 0 评论 -
Python list 列表遍历删除
通过遍历原 list 的一个拷贝,来删除原 list 中的元素。if __name__ == '__main__': num_list = ['aa', 2, 3, 2, 1, 'bb', 4, 6, 73, 5, 1, 3, 1, 2, 'cc'] for i in num_list[:]: if i in [1, 2, 3]: num_list.remove(i) print(num_list)num_list[ : ] 返回原原创 2020-07-02 17:12:34 · 254 阅读 · 0 评论 -
Python `and` 运算符
如:t = x and y如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。换言之,只要前面的内容能得出结果,后面就不会再去算了。ps:这种特性叫什么来着?原创 2020-07-02 17:00:12 · 205 阅读 · 0 评论 -
Python 文件处理
文件打开时 mode 含义:追加:def write_error_info(self, error_info): # 检查文件是否存在,一个月保存为一个文件 file_dir = "./error_log" file_path = file_dir + "/" + util.get_time()[0:10] + "-error.csv" # 不存在则新建 if os.path.exists(file_dir) is False: os.make原创 2020-06-29 16:52:11 · 100 阅读 · 0 评论 -
Python 位运算符
位运算符是对二进制数进行操作。位运算符功能<<按位左移,左移n位相当于乘以2的n次方>>按位右移 ,左移n位相当于除以2的n次方&按位与,如果两个相应的二进制位都为 1,则该位的结果值为 1;否则为 0。l按位或 ,两个相应的二进制位中只要有一个为 1,该位的结果值为 1;否则为 0。^按位异或 ,若参加运算的两个二进制位同号则结果为0,异号则结果为1~按位取反,用来对一个二进制数按位取反,即将0变1,将1变0。原创 2020-06-28 17:05:50 · 1757 阅读 · 0 评论 -
Python 去掉字符串中的空格
str = str.strip() # 去掉字符串中的首尾空格str = str.replace(" ","") # 去掉字符串中的所有空格原创 2020-06-28 13:41:47 · 151 阅读 · 0 评论 -
Python: xxxx is not callable
问题如下:导入了某个类,为什么不能用呢?原因及解决办法:import DataCollectorModel 仅仅只是导入了这个文件,要使用里面的类,就必须得在文件后再加上类名:model = DataCollectorModel.DataCollectorModel(),或者导包时指明导入的内容:from DataCollectorModel import DataCollectorModel...原创 2020-06-28 13:38:00 · 2592 阅读 · 1 评论 -
Python 调用函数,参数传递是值传递还是引用传递?
在 Python 中,一切皆对象。是引用传递。假如传给函数的参数是一个变量,并且在函数中修改这个变量值,那么之后在函数外读取这个变量的值,就会发现这个变量被修改了。原创 2020-06-24 16:43:17 · 228 阅读 · 0 评论 -
Python 创建子线程
1、通过函数名指定子线程的任务import threadingfrom time import sleepdef child_thread_func(str, main_thread_func): sleep(3) # 子线程暂停 3 秒,模拟获取数据的操作 data = 'xxx' # 在子线程中回调主线程的函数,更新界面 main_thread_func(data) print(str)def main(): # 通过 target=原创 2020-06-24 13:55:24 · 4263 阅读 · 0 评论 -
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInit
问题:使用 pip 安装了 PyOpenGL 包,然后运行程序,结果提示:OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInit原因:使用 pip 安装的 OpenGL 包是 32 位,与 64 位电脑不匹配,故出现此错误。解决办法:pip 不能在线安装 64 位的 OpenGL,只能手动下载后安装。下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#p原创 2020-06-22 14:22:55 · 5491 阅读 · 3 评论 -
Python 获取所有串口设备端口
依赖 pyserial 包,没有安装的话需要先安装:pip install pyserialfrom serial.tools import list_portsif __name__ == '__main__': # 获取端口列表,列表中为 ListPortInfo 对象 port_list = list(list_ports.comports()) num = len(port_list) if num <= 0: print("找不到任何原创 2020-06-19 17:15:57 · 5646 阅读 · 2 评论 -
Python 16 进制格式化
有十六进制字符串 ABC,但是想凑够 4 位,想在前面添个 0 该怎么半?str = "{:#06X}".format(int('ABC', 16))[2:]得到输出:0ABC知识点::#0:表示位数不够用 0 进行补位6:表示格式化后的总长度为 6 位X:表示转化为 16 进制int('ABC', 16):将 16 进制数 ABC 转换成 10 进制[2:]:表示只取格式化后的字符串第 2 个及后面的。因为默认得到的格式化字符串为 0x0ABC,前面带了 0x,使我们不需要的,所以就原创 2020-06-19 16:44:20 · 13335 阅读 · 0 评论 -
PTYHONPATH 环境变量
Python 搜索模块的路径:程序的主目录PTYHONPATH 目录(如果在 Windows 环境变量中进行了设置)标准库目录(C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages)原创 2020-06-18 17:05:47 · 150 阅读 · 0 评论 -
pip pip3 区别
1、当你的电脑上只有一个 Python 版本时,pip 和 pip3 这两个命令效果是一样的,没有区别。只安装了 Python 2 时,那么就只有 pip 可使用。只安装了 Python 3时,既可以使用 pip,也可以使用 pip3,但效果是一样的。2、但是,当你电脑既安装了 Python 2.7,又安装了 Python 3.6,那么此时pip 与 pip3 就有区别。pip install 专门为 Python 2 安装库,而 pip3 install 专门为 Python 3 安装库。这样设计原创 2020-06-18 16:23:39 · 1867 阅读 · 0 评论 -
Python 字节类 bytes
bytes() 是 Python 里面的一个类,专门用来处理字节。我们知道,一个字节等于 8 位,换言之,一个字节表示 8 个二进制数字。在计算机中,字符本质上都是以二进制存储的。字符 -> 编码 -> 二进制 -> 解码 -> 字符...原创 2020-06-18 13:44:21 · 412 阅读 · 0 评论 -
(1)Tkinter:Python自带的开发界面的包
本篇文章主要介绍Tkinter的特点。Tkinter这个库主要用来开发图形化界面。如果你的应用程序需要一个简单的图形化操作界面,那Tkinter可能是你很好的选择。优点:Python自带的标准包。只要安装了Python,就可以直接导入Tkinter,不需要额外安装,十分简单。同时,只要电脑能够运行Python代码,那么就可以运行该界面。...原创 2020-05-24 15:10:48 · 229 阅读 · 0 评论 -
Python 倒序切片
倒序切片members = ['张三','李四','王五','芳芳','小明','小王'] print(members[-3:]) ['芳芳', '小明', '小王']print(members[:-3])['张三', '李四', '王五']`切片要给两个参数,一个是起始位置(从这个位置开始取),一个是结束位置(结束位置之前的)。得到的结果包含起始位置,但不包含结束位置。...原创 2020-01-18 23:09:46 · 1598 阅读 · 0 评论 -
Pyplot模块
慢慢完善:2020/1/11,第一个版本;状态机层的接口:没有对象出现,挨着调用一个个函数就能完成功能,但是不如面向对象的接口灵活。# 创建画布,可以指定编号(名字)、大小。# 如果需要打印出来的图片分辨率很大,那么图片会被压缩。figure(num=None, figsize=None) 使用Subplot(221)后,返回一个ax对象,就是这个子图,后面作图就是在这个子图上操作。...原创 2020-01-11 20:49:28 · 310 阅读 · 0 评论 -
python 设定mha文件中的窗位窗宽
打开一个mha文件,image intensity范围太广。我理解的image intensity就是像素强度值。在我们的项目中,我们只需要保留-125~225之间的像素强度。调整代码如下:def adjust_img_level_window(): """ 调整CT图像的窗位窗宽,把像素强度低于minimum的都改为minimum,把大于maximum都改为maximum...原创 2019-09-19 21:47:08 · 588 阅读 · 0 评论 -
`nvidia-smi`查看GPU状态,显示0%利用率却只有十几M显存可用?
先用nvidia-smi命令查看GPU状态:问题在这:不能只看0%,还要看显存使用量。Memory-usage 表示显存使用量。volatile GPU-Util表示GPU利用率,表示GPU计算单元的利用率,0%表示没有使用。什么情况会出现显存满了,但GPU吕勇率仍未0%呢?可能的情况就是程序将数据读入了内存,但是没有任何计算任务,然后程序也不退出,就一直在那运行着。所以可以查看哪些占用显存...原创 2019-09-22 18:05:59 · 5836 阅读 · 1 评论 -
PyCharm 里面的 c、m、F、f、v、p 分别代表什么含义?
看图片:我之前就把小写的f误认为是function,就觉得很不对劲。后来终于发现,小写的f代表类属性,即Field;大写的F才代表Function,即普通函数。或者访问官网,查看更多符号解释:https://www.jetbrains.com/help/pycharm/symbols.html...原创 2019-09-24 08:44:22 · 16335 阅读 · 6 评论 -
Python 保存文件时错误 Permission denied, Invalid argument
我犯了第一个错误:保存文件时传了一个路径进去r'D:\16-data\membrane\data\models',而不是一个文件。这个时候就报错: Permission denied。解决办法:传一个文件路径进去,而不是文件夹路径。改正了这个错误,传了一个文件路径进去:r'D:\...\membrane 11:26.h5',结果又提示Invalid argument。因为我又犯了一个错误:Wi...原创 2019-09-28 20:04:06 · 3898 阅读 · 1 评论