Python学习
AA8j
Who Am I-Kein System ist sicher
展开
-
【python学习】最优雅的创建多线程+线程池+同步锁+限制最大并发数(使用类创建)
代码import threadingimport timesem = threading.Semaphore(3) # 限制线程的最大数量为3个class GoThread(threading.Thread): def __init__(self, num): super().__init__() self.num = num def run(self): # 总共要数多少个数 for i in range(s原创 2021-03-19 09:27:18 · 345 阅读 · 0 评论 -
【python学习】最优雅的创建多线程+线程池+同步锁+限制最大并发数
代码import threadingimport timedef go_thread(): # 每个线程都数6秒 for i in range(6): with sem: # 限制线程的最大数量 with lock: # 同步锁 print(threading.current_thread().name, i + 1) time.sleep(1)sem = threading.原创 2021-03-19 09:25:34 · 312 阅读 · 0 评论 -
【Python之路——字符串和正则回顾25列】
1 反转字符串st = 'python'# 方法一print(''.join(reversed(st)))# 方法二print(st[::-1])2 字符串切片操作字符串切片操作——查找替换3或5的倍数>>> [str("java"[i%3*4:]+"python"[i%5*6:] ori) foriinrange(1,15)]['1','2','java','4','python','java','7','8','java','python','11','java',原创 2020-11-20 09:30:54 · 378 阅读 · 1 评论 -
【Python之路——基础回顾90列】
一、Python基础Python基础主要总结Python常用内置函数;Python独有的语法特性、关键词nonlocal,global 等;内置数据结构包括:列表(list),字典(dict),集合(set),元组(tuple) 以及相关的高级模块 collections 中的 Counter,namedtuple,defaultdict,heapq 模块。目前共有 90 个小例子。1 求绝对值求绝对值或复数的模>>> abs(-6)62 元素都为真接受一个迭代器,如果迭代原创 2020-11-17 20:34:03 · 645 阅读 · 1 评论 -
【TCP/IP网络编程实验】之【python实现客户端给服务器发送小写字母,服务器返回大写字母(TCP)】
1.0Serverimport socketimport timedef create_server(hostAndPort: tuple, data_size: int, data_type: str, connect_max: int): """ 创建服务器 :param hostAndPort: 本机IP和开放端口 :param data_size: 最大传输字节 :param data_type: 编解码格式 :param connect原创 2020-11-05 14:25:31 · 1097 阅读 · 0 评论 -
【python3易忘随笔】
三引号三引号可以在输出的时候直接粘贴多行文本及多行注释。print('''锄禾日当午汗滴禾下土''')'''这是多行注释'''锄禾日当午汗滴禾下土解决乱码File-Settings-Editor-File Encodings-Project Encoding:GBK...原创 2020-11-02 08:56:04 · 162 阅读 · 0 评论 -
【用python对多个txt文件合并并去重】
import os# 合并函数def merger(files_path): try: # 返回目录下所有文件名 files_list = os.listdir(files_path) # 打开一个文件装下所有数据 with open(bigfile_path, 'wb') as bigfile: print('开始合并。。。') # 循环每一个文件名 fo原创 2020-11-02 08:54:10 · 3559 阅读 · 8 评论 -
【python随笔】之【协程编号及协程实现生产者消费者模式】
编号# 利用协程编号def go(): data = '' # send一次,循环一次 for i in range(10000000): r = yield data # 获取发送的数据 print(i, r)if __name__ == '__main__': my = go() student_list = [None, '小明', '小红', '小张'] # 协程第一个参数必须传递空 for student原创 2020-10-29 10:29:38 · 226 阅读 · 0 评论 -
【python随笔】之【对xls或xlsx文件的读写】
from pyexcel_xls import get_datafrom pyexcel_xls import save_datafrom collections import OrderedDictdef read_xls(path): # 是一个有序字典类型:[('sheet1_name',[['row1','row1','row1'],['row2','row2','row2']]),(...)] xlsData = get_data(path) # 读取每个shee原创 2020-10-28 20:25:07 · 197 阅读 · 0 评论 -
【python随笔】之【将doc、docx文件保存为txt文件】
import win32com.clientdef change_word_to_txt(word_path, save_path): print('读取中。。。') word = win32com.client.Dispatch('Word.Application') # 调用word应用 doc = word.Documents.Open(word_path) print('保存中。。。') doc.SaveAs(save_path, 2) # 保存格式原创 2020-10-28 10:07:31 · 2051 阅读 · 1 评论 -
解决“from exceptions import PendingDeprecationWarning ModuleNotFoundError: No module named ‘exception”
如图:原创 2020-10-27 15:00:20 · 10871 阅读 · 5 评论 -
【python随笔】之【多进程检索单个文件】
import mathimport multiprocessingimport timeclass MyProcess: def __init__(self, p: str, key: str, start_index: int, end_index: int): super().__init__() self.path = p self.key = key self.start_index = start_index原创 2020-10-26 09:42:43 · 174 阅读 · 0 评论 -
【python随笔】之【单线程和多线程检索单个10w条数据文件速度比较】
首先用下列代码生成了十万条1-10000的随机数:import randomwith open('14.txt', 'w+') as f: for i in range(1000000): f.write(str(random.randint(1, 10000)) + '\n')单线程检索import timedef find(key: str, path): with open(path, 'r') as f: key_list = []原创 2020-10-24 20:54:37 · 498 阅读 · 0 评论 -
【python随笔】之【多进程并行统计多个cvs文件行数】
可以参考上一篇多线程并发修改之:import multiprocessingimport osimport csvclass MyProcess: def __init__(self, path): # 路径 self.path = path # 行数 self.line = -1 # 创建进程 self.p = multiprocessing.Process(target=self.coun原创 2020-10-24 16:29:10 · 396 阅读 · 1 评论 -
【python随笔】之【多线程并发统计多个cvs文件行数】
import threadingimport csvimport osclass MyThreading(threading.Thread): def __init__(self, path): super().__init__() # 路径 self.path = path # 行数 self.line = -1 def run(self): # 读取文件 reade原创 2020-10-24 16:10:03 · 364 阅读 · 0 评论 -
【python随笔】之【单线程统计单个csv文件行数】
import threadingimport csvclass MyThreading(threading.Thread): def __init__(self, path): super().__init__() # 路径 self.path = path # 行数 self.line = -1 def run(self): # 读取文件 reader = csv.re原创 2020-10-24 15:46:21 · 153 阅读 · 0 评论 -
【python随笔】之【csv文件的读写】
import csv# 写入# newline=''不然每行会自动换行with open('10test.csv', 'w+', newline='') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerows((['姓名', '年龄', '性别'], ['李四', 20, '男'], ['张三', 20, '男']))# 读取path = '10test.csv'reader = csv.read原创 2020-10-24 15:26:29 · 228 阅读 · 0 评论 -
【python随笔】之【进程同步】
import timeimport multiprocessingdef go(L, num): with L: # 自动上锁解锁,其它进程等待 time.sleep(1) print(num)if __name__ == '__main__': # Lock和RLock都可以用来同步进程或者线程,它们之间的区别在于RLock是可重入的。 # 也就是一个线程可以获取多次,只有在release相同次数时,RLock才会有locked状态转原创 2020-10-24 11:44:02 · 75 阅读 · 0 评论 -
【TCP/IP网络编程实验】之【python实现客户端给服务器发送小写字母,服务器返回大写字母(UDP)】
实验要求实验代码及结果Simport socket# 本机IP和开放端口host_port = ('127.0.0.1', 8888)# 最大传输字节data_size = 1024# 编解码格式data_type = 'utf-8'# 最大连接数connect_max = 5def create_server(): try: # 创建socket对象 server = socket.socket( socket原创 2020-10-22 16:19:12 · 1103 阅读 · 2 评论 -
【python随笔】之【两个线程交替打印数字(线程的事件与通信)】
import threadingimport timedef go1(): with con: # 先运行,先锁定 for i in range(0, 10, 2): time.sleep(1) print(threading.current_thread().name, i) con.wait() # 等待 con.notify() # 通知打印完成def go2()原创 2020-10-21 13:30:35 · 683 阅读 · 0 评论 -
【python随笔】之【匹配线程数量并发】
import timeimport threadingbar = threading.Barrier(2) # 必须凑一对线程才能运行def server(): bar.wait() # 必须等到凑一对线程才能运行 print(threading.current_thread().name, '开始了') time.sleep(1) print(threading.current_thread().name, '结束了')for i in range(7原创 2020-10-21 09:21:05 · 194 阅读 · 1 评论 -
【python随笔】之【类创建线程,并加入线程同步】
import threadingimport timeclass MyThread(threading.Thread): def __init__(self, name: int): super().__init__() self.name = str(name) def run(self): for j in range(10): time.sleep(1) threadingLock原创 2020-10-21 08:38:18 · 109 阅读 · 0 评论 -
【python随笔】之【网页抓取邮箱】
import reimport urllib.requestdef grab(rule, url): """ :param rule: 抓取规则 :param url: 抓取网址 :return: 结果的集合 """ my_list = [] for line in urllib.request.urlopen(url): my_list.extend(rule.findall(line.decode('gbk')))原创 2020-10-19 16:01:05 · 862 阅读 · 0 评论 -
【python随笔】之【爬取网页源代码】
import urllib.request# 每行读取for line in urllib.request.urlopen('http://www.baidu.com'): print(line.decode('utf-8'), end='')# 一次全部读取url = urllib.request.urlopen('http://www.baidu.com').read()print(url.decode('utf-8'))原创 2020-10-19 15:12:31 · 213 阅读 · 0 评论 -
【python随笔】之【自定义异常】
# 1class MyException(Exception): def __init__(self, error_value): self.value = error_value def __str__(self): return self.valuex = 1 + 2try: if x > 2: raise MyException('bigger than 2')except MyException as e:原创 2020-10-17 11:04:59 · 96 阅读 · 0 评论 -
【python随笔】之【继承】
class wangjianlin: def __init__(self): self.name = '王健林' self.money = 10000000000class wangsicong(wangjianlin): # 继承 def __init__(self): super().__init__() # 继承父类方法 self.name = '王思聪'wangjianlin = wangjianlin(原创 2020-10-17 10:36:05 · 104 阅读 · 0 评论 -
【python随笔】之【UI】
import osimport tkinterfrom tkinter import ttkdef shutdown(): os.system('shutdown -s -t 60')def cancel_shutdown(): os.system('shutdown -a')# 窗体my_tk = tkinter.Tk() # 窗体的构造函数my_tk.title('关机') # 窗体标题my_tk.geometry('800x600+100+100')原创 2020-10-16 16:47:24 · 142 阅读 · 0 评论 -
【python发送邮件并使用类封装】
简单的邮件发送代码import smtplib # 发送邮件from email.mime.text import MIMEText # 邮件文本# 以163邮箱为例SMTP_server = 'smtp.163.com'Sender = 'xxx@163.com' # 发件人邮箱Password = 'JUBMSUDZGUxxxx' # 密码为授权码,在设置-SMTP-开启后会显示Receiver = 'xxxx@qq.com' # 接收者title = '这是邮件发送测试标题原创 2020-10-15 10:45:14 · 652 阅读 · 0 评论 -
【python进行简单的主机发现】
需求利用python对网站进行主机发现实现import osprint('正在尝试连接...')host = 'www.baidu.com'my_str = os.popen('ping ' + host + ' -n 1') # 执行命令并返回结果my_str = my_str.read() # 读取输出if my_str.find('找不到') != -1: print('无法连接改地址!')else: my_list = my_str.split('[')原创 2020-10-13 19:20:32 · 447 阅读 · 0 评论 -
【python进行简单的文件加密解密】
需求实现对一个txt文件的加密解密实现加密:源文件:1.txt123456789@qq.com 666666bacdefg@gmail.com 123.456aaaaaaaa@163.com 88888888888print('开始加密...')f = open('1.txt', 'r')fs = open('2.txt', 'w')ch = Truewhile ch: ch = f.read(1) if ch: s_str = chr(ord(c原创 2020-10-13 19:22:16 · 1990 阅读 · 0 评论 -
【python进行排列组合与银行密码穷举】
需求1列出从数字1,2,3,4中任取3个数的所有排列与组合实现import itertools# 排列(有序)my_list = list(itertools.permutations([1, 2, 3, 4], 3))print(my_list)# 组合(无序)my_list = list(itertools.combinations([1, 2, 3, 4], 3))print(my_list)[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4)原创 2020-10-14 13:25:52 · 627 阅读 · 0 评论 -
【python借助第三方接口发送短信验证码】(仅供学习!请勿用作骚扰!)
1.注册短信发送平台百度“互亿无线”,并注册,会送10条免费短信。点击企业用户随便填。2.编辑内容及接收用户发送代码模板:import http.clientimport urllibhost = "106.ihuyi.com"sms_send_uri = "/webservice/sms.php?method=Submit"# 用户名和密码分别为APIID和APIKEY,如图所示account = "用户名"password = "密码"def send_sms(t, m)原创 2020-10-15 09:26:04 · 927 阅读 · 0 评论 -
【python随笔】之【对象的深浅拷贝】
class People: def __init__(self, name): self.name = nameBob = People('Bob')# 浅拷贝,地址相同,为同一对象Lisa = Bobprint(id(Bob), id(Lisa))# 深拷贝,地址不同,为不同对象Lisa = People(Bob.name)print(id(Bob), id(Lisa))46590320 4659032046590320 47534192...原创 2020-10-14 18:34:19 · 82 阅读 · 0 评论 -
【python随笔】之【运算符重载】
class Bob: def __init__(self, x): self.x = x def eat(self): print('Bob吃了%d碗饭' % self.x) # 重载,对两种情况进行重载 def __add__(self, other): # 如果另一个对象为此类,则返回一个此类的的匿名对象 return Bob(self.x + other.x)# Bob昨天吃了10碗饭,今天吃了8原创 2020-10-14 18:26:43 · 139 阅读 · 0 评论 -
【python随笔】之【类动态绑定属性及方法】
对于已实例化的类不想对内部进行修改,可采用动态绑定。class People: passBob = People()# 动态增加属性Bob.name = 'Bob'# 动态增加方法,动态方法不能使用self,lambda为匿名方法Bob.eat = lambda num: print(Bob.name + '吃了', num, '碗饭')print(Bob.name)Bob.eat(10)BobBob吃了 10 碗饭...原创 2020-10-14 14:41:18 · 137 阅读 · 0 评论 -
【python随笔】之【创建窗体与自定义创建窗体类】
创建窗体import tkintermy_tk = tkinter.Tk() # 窗体的构造函数my_tk.title('这是一个窗体') # 窗体标题my_tk.geometry('600x400+100+100') # 窗体横纵长,及窗体位置my_tk.mainloop() # 打开窗体自定义创建窗体import tkinterclass MyTK: def __init__(self, title, height, width, x, y): s原创 2020-10-14 14:39:04 · 675 阅读 · 0 评论 -
【python进行多个txt文件的归并与对单个txt文件的分割】
需求1将多个txt文件里的数据归并到一个文件:实现import os# 存放多个txt文件的路径filepath = r'D:\download\Documents\Code\Python\test1\归并txt文件\file'# 返回目录下所有文件名file_list = os.listdir(filepath)allin_filepath = r'D:\download\Documents\Code\Python\test1\归并txt文件\allin.txt'with open(原创 2020-10-13 17:13:42 · 362 阅读 · 2 评论 -
【python进行密码次数统计及排序】
需求实现对一个如password.txt:1 admin 1234562 abc 6666663 rookie 1234564 jack 8888886 aaa 1234567 bbb 6666668 ccc 8888889 ddd ddddddddd10 eee aaaaaaa11 fff 12345612 ggg 666666的用户信息进行密码统计并排序。实现def save_password(password_path): print('StartCountP原创 2020-10-13 15:06:28 · 620 阅读 · 0 评论 -
【Python3学习笔记】之【Python高级——多线程】
多线程优点实现线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理进度。程序运行速度更快。在一些等待的任务实现如用户输入、文件读写和网络收发数据等,线程就比较有用。在这种情况下我们可以释放一些珍贵的资源如内存占用等。注意每个独立的线程有一个程序的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。每个线程都有他自己的一组CPU寄存器,称为线程原创 2020-10-03 21:49:28 · 268 阅读 · 0 评论 -
【Python3学习笔记】之【Python高级——SMTP发送邮件】
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。创建 SMTP 对象语法如下:import smtplibsmtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )参数说明:参数说明hostSMTP原创 2020-10-02 18:03:29 · 1409 阅读 · 1 评论