
Python
Python
苦涩精灵
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python摄像头录制视频保存到本地
from os import mkdirfrom os.path import isdirimport datetimefrom time import sleepfrom threading import Threadimport cv2def write(): while cap.isOpened(): ret, frame = cap.read() if ret: #写入视频文件 aviFile.write(fram原创 2020-07-28 10:50:30 · 1934 阅读 · 3 评论 -
Python升级pip并安装opencv、moviepy包
在环境变量中新建python目录路径python -m pip install --upgrade pip升级pip,pip install opencv-python安装opencv包原创 2020-07-28 10:19:21 · 1401 阅读 · 1 评论 -
Python简单GUI(录音机)
import waveimport threadingimport tkinterimport tkinter.filedialogimport tkinter.messageboximport pyaudioroot = tkinter.Tk()root.title('Recorder')root.geometry('270x80+550+300')root.resizable(False, False)fileName = NoneallowRecording = False原创 2020-07-28 08:48:50 · 1034 阅读 · 0 评论 -
Python制作彩色验证码
from random import choice, randint, randrangeimport stringfrom PIL import Image, ImageDraw, ImageFont#返回length长度随机字母和数字def selectedCharacters(length): result = ''.join(choice(string.ascii_letters+string.digits) for _ in range(length)) return r原创 2020-07-27 13:28:17 · 365 阅读 · 0 评论 -
Python绘制3D图(键盘控制)
import sysfrom OpenGL.GL import *from OpenGL.GLUT import *from OpenGL.GLU import *from PIL import Imageclass MyPyOpenGLTest: def __init__(self, width=640, height=480,title="Keyboard Control"): glutInit(sys.argv) glutInitDisplayMod原创 2020-07-26 12:51:23 · 1065 阅读 · 0 评论 -
Python安装OpenGL包
1.下载对应的OpenGL包:https://www.lfd.uci.edu/~gohlke/pythonlibs/2.在本地磁盘找到下载好的包,我的版本是Python3.83.在cmd中进入此目录,安装两个.whl文件4.再导入包就不会报错了原创 2020-07-26 12:11:40 · 2258 阅读 · 0 评论 -
Python对MySQL数据库的创建,增删改查操作
import pymysql#连接数据库conn = pymysql.connect(host='127.0.0.1', user='root', password='SQL123', database='experiment', charset='utf8')def doSQL(sql): cursor.e原创 2020-07-25 11:12:25 · 298 阅读 · 0 评论 -
Python使用管道实现进程间数据传递
from multiprocessing import Process, Pipedef f(conn): conn.send('Hello World!') #向管道中发送数据 conn.close()if __name__ == '__main__': conn_A, conn_B = Pipe() #创建管道对象 p = Process(target=f, args=(conn_A,)) #将管道的一方给子进程 p.start()原创 2020-07-25 09:47:30 · 772 阅读 · 0 评论 -
Python的BoundedSemaphore对象和Pool对象实例
BoundedSemaphore对象:from threading import Thread, BoundedSemaphorefrom time import time,sleepdef execute(i): start=time() with sem: end=time() print("Thread: {0} waiting time:{1}".format(i,end-start)) sleep(2) se原创 2020-07-24 13:46:28 · 370 阅读 · 0 评论 -
Python的Lock对象和Condition对象对比
Lock对象:import threadingimport timeclass myThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): global x lock.acquire() #当前线程锁定,阻塞其他线程 for i in range(10): x+原创 2020-07-23 14:13:51 · 528 阅读 · 0 评论 -
Python线程类调用普通方法
import threadingimport timeclass myThread(threading.Thread): def __init__(self,name): threading.Thread.__init__(self) self.name=name def run(self): print("thread run()") def showMess(self): print("class method:原创 2020-07-23 12:21:51 · 512 阅读 · 0 评论 -
Python创建多线程(join线程同步)
import threadingimport timedef timer(v): #定时器线程函数 print(v) def demo(x,y): for i in range(x,y): print(i,end=" ") time.sleep(5) #线程挂起5秒 t=threading.Timer(2,timer,args=(1,)) #2秒后执行定时器t2=threading.Timer(0.5,原创 2020-07-22 15:17:16 · 277 阅读 · 0 评论 -
Python爬取网页源码,图片和文字到本地
import reimport osimport os.pathfrom time import sleepfrom urllib.parse import urljoinfrom urllib.request import urlopenfrom multiprocessing import Pooldef crawlUrl(item): perUrl,name=item perUrl=urljoin(url,perUrl) #资源网页绝对路径 name=原创 2020-07-20 14:15:44 · 1114 阅读 · 0 评论 -
Python查看本机所有联网应用程序信息
from os.path import basenamefrom psutil import net_connections, Processprint(" 程序文件名:\t\t本地地址:\t\t\t\t\t远程地址:\t\t\t\t连接状态:")for conn in net_connections('all'): laddr, raddr, status, pid = conn[3:] if not raddr: continue else:原创 2020-07-19 16:50:36 · 446 阅读 · 0 评论 -
Python套接字通信(多线程自动回复机器人)
Receiverimport socketfrom os.path import commonprefixwords = {'hello':'Hello', 'Who are you?':'Servicer', 'over':'Over'}HOST = ''PORT = 5000s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind((HOST, PORT)) #绑定地址s.原创 2020-07-19 10:09:22 · 481 阅读 · 0 评论 -
Python套接字通信实例
Sender:import socket#创建一个socket对象,#socket.AF_INET表示IPV4,socket.AF_INET6表示IPV6#socket.SOCK_STREAM表示TCP协议,socket.SOCK_DGRAM表示UDP协议s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)mess=""while mess.lower()!="over": mess=input("Please input the s原创 2020-07-18 18:55:16 · 415 阅读 · 0 评论 -
Python简单GUI(模拟画图)
import osimport tkinterimport tkinter.simpledialogimport tkinter.colorchooserimport tkinter.filedialogfrom PIL import Imagefrom PIL import ImageGrabdef openItem(): global img filename=tkinter.filedialog.askopenfilename(title="Open",filetype原创 2020-07-15 12:38:00 · 1647 阅读 · 0 评论 -
Python简单GUI(模拟图片查看器)
import osimport tkinterimport tkinter.messageboxfrom PIL import Image, ImageTkdef init(): global curP curP=0 changePic()def clickPre(): global curP if curP==0: tkinter.messagebox.showinfo("Error", "This is the first pictu原创 2020-07-14 09:56:12 · 1276 阅读 · 0 评论 -
Python简单GUI(猜随机数)
import tkinterimport tkinter.messageboxfrom tkinter.simpledialog import askintegerimport randomdef init(): entryNum['state'] = "disabled" btnConfirm['state'] = "disabled"def confirm(): global guessNum global count count[0] += 1原创 2020-07-13 12:41:58 · 416 阅读 · 0 评论 -
Python简单GUI(随机点名)
import tkinterimport tkinter.messageboximport randomimport threadingimport itertoolsimport timedef closeWindow(): root.flag=False time.sleep(0.1) #延迟0.1秒执行 root.destroy()def clickStart(): t=threading.Thread(target=shuffleUsers)原创 2020-07-12 16:59:39 · 1401 阅读 · 1 评论 -
Python简单GUI(模拟放大镜)
import tkinterfrom PIL import ImageGrab, ImageTkroot=tkinter.Tk()screenW=root.winfo_screenwidth()screenH=root.winfo_screenheight()root.geometry(str(screenW)+'x'+str(screenH)+'+0+0')root.overrideredirect(True) #不显示标题栏root.resizable(False,False)原创 2020-07-09 11:15:17 · 1974 阅读 · 0 评论 -
Python提示ModuleNotFoundError: No module named ‘PIL‘,已解决
提示错误:这是因为缺少pillow包,解决:1.在环境变量Path中新建python安装目录下的Scripts路径2.打开cmd输入:pip install pillow安装安装成功后,import PIL就不会报错了原创 2020-07-09 09:19:03 · 18665 阅读 · 0 评论 -
Python出现AttributeError: module ‘tkinter‘ has no attribute ‘messagebox‘,已解决
Python使用对话框显示提示信息出现无messagebox属性解决:引入tkinter.messagebox包即可import tkinter.messagebox原创 2020-07-09 08:50:46 · 9888 阅读 · 0 评论 -
python的简单GUI(模拟计算器)
import tkinterimport reoperators=('+','-','*','/','**','//')def buttonClick(btn): val=contentVar.get() if val.startswith('.'): val='0'+val if btn in '0123456789': val+=btn elif btn=='.': t=re.split(r'\+|-|\*|/]'原创 2020-07-06 10:07:16 · 639 阅读 · 0 评论 -
python的简单GUI(多线程时钟)
import tkinterimport threadingimport datetimeimport timeroot=tkinter.Tk()root.overrideredirect(True) #覆盖标题栏root.attributes('-alpha',0.5) root.attributes('-topmost',1) #保持前置root.geometry('200x50+1200+50') #初始大小和位置x=tkinter原创 2020-07-03 15:23:20 · 886 阅读 · 0 评论 -
python简单GUI(模拟记事本)
import tkinter.filedialogimport tkinter.messageboximport tkinter.scrolledtextimport tkinter.simpledialogroot = tkinter.Tk()root.title("Notepad")root['width'] = 200root['height'] = 300filename="E://无标题.txt"textChanged=tkinter.IntVar(root,value=0)原创 2020-07-02 17:25:25 · 1112 阅读 · 0 评论 -
python的简单GUI(数据绑定与listbox)
import tkinterimport tkinter.messageboximport tkinter.ttkclasses={'1':['z1','z2','z3','z4'], '2':['l1','l2','l3'], '3':['m5','m6','m7','m8']}root=tkinter.Tk()root.title("GUI TWO")root['height']=300root['width']=270def changeCla原创 2020-07-01 18:53:31 · 679 阅读 · 0 评论 -
python的全局变量 local variable ‘xxx‘ referenced before assignment
在python中一个方法中更改全局变量出错解决方法:在这个方法体中给全局变量前加globalerrorTimes=0def f(): global errorTimes errorTimes+=1 print(errorTimes)原创 2020-07-01 10:39:50 · 918 阅读 · 0 评论 -
python的简单GUI(登录窗口)
用到了tkinter包,勾选记忆后用户名和密码会以文件的形式保存在本地磁盘import tkinterimport tkinter.messageboximport osf_path="E://gui.txt"def autoFill(): try: with open(f_path,'r') as fp: name,pwd=fp.read().strip().split(',') varName.set(name)原创 2020-07-01 09:52:44 · 1573 阅读 · 0 评论 -
python的自定义异常类,带参Exception,多个except,断言语句,断点,try...except,try...except...else,try...except...finally处理
1、自定义异常类class ShortIntegerException(Exception): def __init__(self,length,atleast): Exception.__init__(self) self.length=length self.atleast=atleasttry: i=input("Please input a number:") if len(i)<5: raise Sh原创 2020-06-30 10:20:03 · 753 阅读 · 0 评论 -
python的文件读写,序列化,复制/删除目录,压缩/解压缩/列出压缩文件目录,计算CRC32和MD5
import jsonimport osimport shutilimport pickleimport zlibimport binasciiimport hashlibimport zipfilefrom random import randints="你好世界!\nHello World!"print("文件读写".center(60,"-"))with open("E://test.txt","w") as fp: fp.write(s)with open("E://原创 2020-06-29 16:32:14 · 272 阅读 · 0 评论 -
python的父类和子类的继承关系和super()的使用
子类继承父类的私有方法重写无效,公有方法可以重写,引用父类方法可用super()实现class A(object): def __init__(self): self.__private() self.public() def __private(self): print('i am a private method in A') def public(self): print("i am a public metho原创 2020-06-28 10:08:31 · 653 阅读 · 0 评论 -
python的实例类方法、修饰器类方法、修饰器保护方法、修饰器静态方法中私有属性的区别和自定义property的读写方法
class Cla: __count=0 va=0 def __init__(self,v): self.__value=v Cla.__count+=1 def show(self): print('普通实例方法访问私有属性:',self.__value,Cla.__count) @classmethod def classShow(cls): print('修饰器类方法访问私有原创 2020-06-27 17:08:58 · 451 阅读 · 0 评论 -
python类的构造方法和assert的使用,用MethodType动态绑定类方法
一、通过__init__构造方法赋值import typesclass C: sex = 'male' def __init__(self, age): self.age = age def show(self): return self.agecla = C(21)print('用构造函数添加属性', cla.show(), sep=":")print('通过实例查看属性:', cla.age, cla.sex)cla.name = 'Z原创 2020-06-27 03:03:30 · 298 阅读 · 0 评论 -
python生成器函数的使用(模拟cycle函数)
包含yield的语句的函数可作为生成器对象用next(iterator)或__next__()调用(两个下划线),yield代表此处返回一个值并暂停下列语句def f(it): while True: for i in it: yield if=f(['a','b','c'])print("next(iterator)调用:")for i in range(10): print(next(f))print("__next__()调用",f._原创 2020-06-26 14:29:25 · 2105 阅读 · 0 评论 -
Python6行代码解决爬楼问题(假设一段楼梯共n个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法?)
问题描述:假设一段楼梯共n个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法?上第一个台阶,方法:1种(1)上第二个台阶,方法:2种(11,2)上第三个台阶,方法:4种(111,12,21,3)所以共有3种方法上楼,上第n个台阶,方法:f(n)=f(n-1)+f(n-2)+f(n-3)种def climbStairs(n): a,b,c=1,2,4 for i in range(n-3): c, b, a = a+b+c, c, b pr原创 2020-06-25 10:22:22 · 11624 阅读 · 0 评论 -
Python7行代码解决约瑟夫环问题(切片实现)
问题描述:n个人围成一个圈,由第1个人开始报数,每报数到第k个人该人退出圈,然后再由下一个从1开始报数,求最后剩下一个人是多少号?如下,使用python的切片实现def f(s, k): while len(s) != 1: if(len(s) < k): k = k % len(s) s = s[k:] + s[:k - 1] print(s)f(list(range(1,100)), 3)...原创 2020-06-25 09:44:50 · 451 阅读 · 0 评论 -
Python的可变长度参数*和**,传参序列解包,isinstance的使用
import mathdef f1(*argu): print(argu)def f2(**argu): for i in argu.items(): print(i) print("可变长度参数*和**".center(40, '-'))f1(1,2,3,4,5)f2(a=1,b=2,c=3)print("传参序列解包".center(40,'-'))def f3(a,b,c): print(a*b*c)seq=[1,2,3]dic=原创 2020-06-24 14:48:47 · 400 阅读 · 0 评论 -
Python用正则表达式匹配ABAC和AABB的词语
正则表达式前加r是为了不转义反斜杠后的字符,\3代表此处重复出现子模式3from re import findalltext = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、背水一战、霸王别姬、天上人间、不吐不快、海阔天空、情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、浩浩荡荡、平平安安、秀秀气气、斯斯文文、高高兴兴'''print("原创 2020-06-24 12:49:21 · 7680 阅读 · 4 评论 -
Python使用正则表达式
findall方法有返回值为匹配成功,返回值为[]为匹配失败import repattern = '^[0-9]*$'print(pattern, "匹配数字", re.findall(pattern, '12345'))pattern = '^(-?\d+)(\.\d+)$'print(pattern, "匹配浮点数", re.findall(pattern, '3.1415926'))pattern = '^\d{3,4}$'print(pattern, "匹配长度为3-4的数字", re原创 2020-06-23 16:28:20 · 444 阅读 · 0 评论