![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python进阶
胜天半子_王二_王半仙
胜天半子——王二——王半仙儿是也
展开
-
python weakref的应用举例
有很多时候, 我们想拥有一个实例, 但是不增加引用计数. 怎么解决呢?原创 2024-05-30 18:33:47 · 192 阅读 · 0 评论 -
python tarfile.extractall 解压,路径过长导致解压失败,提示no such file
python接口, windows路径过长问题原创 2023-04-25 00:26:48 · 929 阅读 · 1 评论 -
python字典dict排序
python 字典按值排序原理原创 2022-08-18 19:18:27 · 279 阅读 · 0 评论 -
urllib2 post
urllib2发送post请求原创 2022-08-18 18:59:07 · 325 阅读 · 0 评论 -
python flask样例
python flask stream demo原创 2022-08-08 15:19:50 · 404 阅读 · 0 评论 -
python获取cmd输出
python获取命令行输出原创 2022-06-15 15:06:47 · 3343 阅读 · 2 评论 -
python 一个有趣的正则贪婪问题
先说问题问题的关键就是{n,m}这种写法是贪婪的, 就是会金量往m上靠举例比如我们想用正则匹配下面几个, 把年月日给挑出来2020-01-022020-1-22020.01.022020 01 022020 1 22020/01/0220200102有没有法线, 如果除了最后一个, 我们就可以用非常简单的方法来做:(\d+)[-. /](\d+)[-. /](\d+)是不是很简单, 但是最后给我们来了一个20200102, tnnd, 中间一个分隔符都没有, 然后我想这, 先把原创 2022-03-03 21:30:19 · 496 阅读 · 0 评论 -
this application has requested the runtime 在python qt的多线程中出错
最新写了一个pyqt5的脚本, 用到了多线程, 在关闭页面的时候, 总是会报错this application has requested the runtime, 网上找了很久没发现问题所在, 最后一点一点试出来错误在哪, 特此记录.关键在于我使用了多线程, 子线程关闭基本由两种方式设置setDaemon(True为守护线程, 那么主线程关闭则子线程自然关闭子线程主动sys.exit(0) 退出线程(和在run中结束一样的效果)我是因为想要让ui更加顺滑一点, 所以在子线程中跑了pyqt,并且原创 2022-02-21 16:10:48 · 1224 阅读 · 0 评论 -
python 将一个方法, 按照设定的时间间隔执行:
将一个方法, 按照设定的时间间隔执行:主要思路就是分段:分段通过将目标函数, 这里是logic(), 用yield分段, 然后coroutine.next()分段执行时间间隔:时间间隔, 则是通过一个loop函数, 不断从回调函数堆里获取注册的回调. 判断时间间隔, 并执行, 同时主逻辑中, yield之前, 都要注册一个根本上是coroutine.next()的回调import heapqimport timeclass P(object): def __init__(self):原创 2022-02-18 15:16:35 · 2033 阅读 · 0 评论 -
StringIO 的使用, 存在的意义
StringIO存在的意义比如想写一个脚本, 从网站下载一个压缩文件, 并解压到本地. 下意识可能分为三部下载文件写入到本地用zipfile读取这个文件并解压代码如下:# 1. 下载import urllib2res = urllib.openurl(url)zip_data = res.read()# 2. 写入本地with open(file_name_zip, 'wb') as f: f.write(zip_data)# 3. 解压target_dir = r'C:原创 2022-02-09 14:49:15 · 1829 阅读 · 0 评论 -
在python中如何让一个函数分段执行呢?
在python中如何让一个函数分段执行呢??原因:最新在写分针的逻辑, 最开始讲一大段代码分成好几个小的函数, 讲函数放进数组中, 每一帧执行一个, 但总是觉得这样写不够优美, 今天看到其他大神的代码,记录一下思路前提要理解generator:python简单进阶,Generator适用情况:函数太大, 一帧执行不完不想改变函数, 想在函数执行到某个地方的时候, 去做一些其他的事情总之就是想对函数的执行流程进行一些更改测试import sysdef process(str):原创 2022-01-19 20:50:33 · 1689 阅读 · 0 评论 -
python反射总结, 写socket时很好用,短小精悍
在python 2.7中测试通过写socket的时候, 经常要使用到反射, 这里总结一下使用方式类型1. 执行全局的方法, 可以直接在globals()中找到类型2. 执行实例的方法,2.1 实例已经存在: 可以通过getattr(instacne, name)来拿到对应的属性(方法)来执行2.2 实例不存在: 可以在globals()中通过类名 找到该对象并初始化, 然后上面的规则类型1# 类型1, 全局方法def print_hello(_h, _w): print _h, pr原创 2022-01-19 20:11:30 · 101 阅读 · 0 评论 -
python defaultdict详解
经典结构:首先判断这个key是否在字典种如果不在, 那么给这个字典添加上这个key, 初始化if key not in my_dict: my_dict[key] = some_type # [] | {} | number | strmy_dict[key].process()上面那种不是很美观, 引入defaultdictdefaultdict( lambda: x ) 它接收一个func, 没有参数 ,返回的就是key不存在时的默认值, 概念有点像dict.get(key, d原创 2022-01-10 21:24:56 · 534 阅读 · 0 评论 -
python zip file使用
Working with zip files in PythonGeek上的示例, 前两个就够了原创 2021-12-13 15:36:08 · 631 阅读 · 0 评论 -
python闭包深入
如何理解闭包的概念上面这篇文章写的特别好,重点大概如下几个概念code block:作为一个单元(Unit)被执行的一段python程序文本。例如一个模块、函数体和类的定义等。local variable:如果name在一个block中被绑定,该变量便是该block的一个local variable。global variable:如果name在一个module中被绑定,该变量便称为一个global variable。free variable: 如果一个name在一个block中被引用,但没原创 2021-11-22 16:46:16 · 2245 阅读 · 0 评论 -
python coroutine用yield实现
corountineimport timeclass HttpRequest(object): def open_url(self): time.sleep(1) param = yield 1 print param time.sleep(1) param = yield 1 print param time.sleep(1) param = yield 1原创 2021-11-22 14:56:26 · 428 阅读 · 0 评论 -
http分段下载, 长链接下载
import requests# 1. 'Range': f'bytes=' 分段下载# 2. stream=Trueurl = 'http://127.0.0.1:9876/resourceworkshop.json'headers = {"Connection": "Keep-Alive", "Accept": "*/*"}response = requests.get(url, headers=headers, stream=True)file_size = int(respons.原创 2021-11-18 17:22:57 · 380 阅读 · 0 评论 -
使用异常作为结构的一个例子
有关异常和类属性暴露管理的杂谈在这篇文章里, 谈到了异常作为一种系统结构的工具, 而非程序中的错误处理, 但是苦于一直没有找到合适的示例, 今天终于找到了, 这里介绍下class A(object): def run(self): self.func1() # 统一进行错误处理 def func1(self): self.func2() def func2(self): self.func2() def func3(self): pass在执行run方法之后,原创 2021-11-10 17:47:01 · 130 阅读 · 0 评论 -
python 多线程暂停功能
何鑫思想是:decorator是多线程安全的看如下代码, 思想就是让线程A进入decorator并loop, 首先打印pause让线程B进入decorator, 如果打印, 证明是线程安全的import multiprocessingimport threadingimport timeimport osdef decorator(func): def _inner(*args, **kwargs): while args[0].status == 0: print thre原创 2021-11-10 13:52:13 · 1773 阅读 · 0 评论 -
python2 重写print 输出重定向
print使用的是sys.stdout.write()但是不能直接替换stdout.write = new_write所以思路是构造一个新的打印类, 让这个类的方法都等于stdout类的方法然后替换sys.stdout = new_out代码如下# coding=utf-8class A(object): def __init__(self): self.test = 2 def write(self): passimport sysa = A()save_stdou原创 2021-11-09 17:38:21 · 1175 阅读 · 0 评论 -
python multiprocessing 共享内存应用
根据测试, 共享内存的读写应该都是同步的, 不需要lock设置:shared_number = multiprocessing.RawValue(ctypes.c_int, 0)获取shared_number.value至于共享什么type的数据, 可以网上搜一搜, 比如string是c_types.c_char_pimport multiprocessingimport randomimport osimport ctypesdef func(number, _shared_num原创 2021-11-09 15:26:55 · 1541 阅读 · 2 评论 -
python按照数据格式存储和解析
python按照数据格式存储和解析使用jsonimport jsonmy_array = [ {1: 1, 2: 2, '3': 3}, {'gvkuerhghnrti': 12312, 'fwejfw': {1: 1}},]with open('123.json', 'w') as f: json.dump(my_array, f)with open('123.json', 'r') as f: res = json.load(f) print res...原创 2021-09-24 14:13:56 · 169 阅读 · 0 评论 -
python str转unicode
当你的字符串中有'\u573a\u666f\u6570\u636e\u8868.'这种, 这其实是字符串中的东西是用unicode编码的, 跟这个字符串是不是unicode没关系, 是字符串的内容用的unicode, 所以明白了这一点就很简单了x = `'\u573a\u666f\u6570\u636e\u8868.'`print x.decode("unicode-escape")还有一个取巧的方法print eval('u"%s"' % x)...原创 2021-09-15 23:30:21 · 1536 阅读 · 0 评论 -
list()直接返回类的属性列表
class VehicleStateSnapShoot(object): def __init__(self, vehicle, params_list): self.time = time.time() self.pos3 = vehicle.pos3 self.rotation_matrix = vehicle.rotation_matrix self.velocity = vehicle.get_linear_velocity() self.accelerated_veloc.原创 2021-09-14 18:02:07 · 269 阅读 · 0 评论 -
python for循环中改变索引
x = [1, 2, 3, 4, 12.3, 1156.7, 1, 2, 4, 12, 34]iterator = iter(x)for item in iterator: if item == 4: print 'type: {}, params: {}, {}'.format(item, next(iterator), next(iterator)) continue print item原创 2021-09-09 17:05:26 · 645 阅读 · 0 评论 -
python decorator扩展
# coding=utf-8MOVE_FUNC_DICT = {}# 相当于一个函数执行, 并返回一个decorator# 只会初始化的时候执行一次def register_func(move_type): def _inner(fun): MOVE_FUNC_DICT[move_type] = fun return fun return _innerdef decorator(func): def __inner(*args, **kwargs): print '修原创 2021-09-09 16:52:47 · 88 阅读 · 1 评论 -
python 把一个类的方法复制给另一个类
看如下代码一个Resume类, 里面有一个clone方法这个clone方法不是直接实例化自己的类而是实例化一个空类,通过动态赋值来进行cloneclass Resume: def __init__(self): self.id = None def set_id(self, _id): self.id = _id def clone(self): class A: pass a = A() # 这里是属性的复制 for k, v in self.__d原创 2021-05-30 20:55:13 · 1555 阅读 · 0 评论 -
python的heapq加入数组
中心思想就是如果heapq加入的是一个可iterable类型的, 应该是根据第一项进行判断1# -*- coding: utf-8 -*- class TestHeapq(object): def __init__(self, target_time): self.target_time = target_time def __call__(self, *args, **kwargs): print 'My target time is', self.target_time @pr原创 2021-02-21 19:04:11 · 389 阅读 · 0 评论 -
python写rpc框架实用技巧
class TestClass(object): def __init__(self): super(TestClass, self).__init__() def __getattr__(self, item): def call(self, *args, **kwargs): info = { 'called_name': item, 'args': args原创 2020-12-24 22:03:33 · 191 阅读 · 0 评论 -
怎么理解python2 的字符串是字节数组
怎么理解python2 的字符串是字节数组很简单,一个中文字符在utf8下面大部分是3个字节, 那么在python2的环境下.赋值一个字符串,x = '你好世界', 请问, 如何打出你好世界中的你字?我感觉这个东西如果能够理解, 就能够理解字符串是字节数组了, 看下面这个例子x = '你好世界'print len(x)print x[:3]print x[3:6]print x[6:9]print x[9:12]for item in x: print ord(item),执行原创 2020-10-29 10:26:32 · 338 阅读 · 0 评论 -
延时任务管理---定时任务管理
手动实现一个任务管理器这个管理器能够进行任务的添加,任务的延迟执行,任务类定义class MyTask(object): """task类,封装了要执行的函数 wangxiaofeng01@corp.netease.com""" # 需要执行的时间,方法本身,方法的参数 def __init__(self, time_out, target, *args, **kwargs): self.time_out = time_out self.target原创 2020-08-24 16:32:33 · 324 阅读 · 0 评论 -
有关异常和类属性暴露管理的杂谈
1、异常之前在读《clean code》的时候,读到其中的一章,讲什么异常的作用,说了什么垂直啊,不是报错而是设计啊啥的,也没看懂,不过最近好像忽然对此有了感受。之前不懂是因为写的项目不够大,代码不够复杂,所以根本用不到异常,最近写的这个项目也不是很大,其实也不复杂,但是因为我水平不够,设计能力更是不行,还在练气期七八层徘徊(凡人修仙传的级别),所以造成代码稍微复杂,其实也不是很复杂了,此时我顿悟到异常的作用,看来有望突破修炼瓶颈。那就是项目一旦复杂起来,再想让顶层的代码去对底层的逻辑代码造成影响就会原创 2020-08-23 16:14:55 · 271 阅读 · 0 评论 -
python 简单使用twisted,简单demo
简单使用twisted步骤1、下载twisted:pip install twisted2、代码1、实例化一个Factory2、让自己写的Protocol的子类作为实例化的Factory的protocol属性3、reactor监听、启动from twisted.internet import reactor, protocolfrom twisted.internet.protocol import connectionDone# 继承protocol.Protocol# 并重写其原创 2020-08-18 16:58:07 · 1130 阅读 · 0 评论 -
python简单使用protobuf,以及一个demo例子
python使用protobuf1、下载protoc, 在网页的最下面,下载protoc-3.12.4-win64.zip解压即可githubProtocol Buffers v3.12.42、写.proto文件写法参见Language Guide (proto3)3、编译protoc,意思是用protoc编译,--python_out=./ 意思是编译好的文件输出到当前目录,当然想写到哪写到哪,your_message.proto, 意思是你的源文件(当前目录下的)protoc --py原创 2020-08-18 14:54:23 · 2637 阅读 · 1 评论 -
python2 assert
assert断言,如果为True,程序继续运行,为False,程序抛出AssertionError异常,看如下代码a = 1b = 2try: assert a == 2 print '执行完成'except AssertionError: print '断言出错'执行结果断言出错为什么要这样写?有啥用呢?仁者见仁,智者见智了。...原创 2020-08-18 14:31:40 · 1196 阅读 · 0 评论 -
python简单进阶,decorator
decorator前提:everything in python is object even function,attributes,variables,params看这篇之前请先看closure:python简单进阶,closure两个有趣的例子def inc(x): return x + 1def dec(x): return x - 1# 传进一个方法,和一个参数# 返回这个方法def operation(func, x): return func(x)原创 2020-08-17 21:31:45 · 186 阅读 · 1 评论 -
python lambda详解
lambda由浅入深讲解lambda,所有的例子都在python2.7中测试通过1、第一个例子def identity(x): return xa = lambda x: x + 1有上面的分析可得,lambda分为三个部分:关键字: lambdaA bound variable: x (lambda函数的参数)A body: x2、lambda在python中是什么类型的?print type(lambda x: x)执行结果<type 'function'&原创 2020-08-17 20:07:18 · 2793 阅读 · 3 评论 -
python递归拿到包里面所有的文件,文件里面所有的类名,以及类本身
1、递归拿到一个文件夹(python包)中所有的py文件路径使用os.walk(dir),可以递归拿到所有的文件夹,文件夹下所有的文件代码如下:import os# root就是你输入的目录,作为根目录# dirs就是当前目录下的目录列表# files就是当前遍历的目录下所有的文件for root, dirs, files in os.walk('yourTargerFolderPath'): for file in files: # 如果是py文件并且不是包的__init_原创 2020-08-13 19:17:40 · 1497 阅读 · 0 评论 -
python简单进阶,closure
closurewe have a closure in Python when a nested function references a value in its enclosing scope.就是说closure就是python中的嵌套函数使用了封闭环境中的值(该函数外面一层函数中的数值),嵌套函数能够使用封闭函数中的变量,如下:def print_meg(msg): # this is outer enclosing function def printer():原创 2020-08-09 19:10:25 · 319 阅读 · 0 评论 -
python简单进阶,Iteration
Iteration迭代器1、我们首先以for loop为目标,for loop的实现机理很简单,就是一个while循环,等待抛出StopIteration的异常来退出循环,如下例:test_list_two = ["123", "456", "789"]for item in test_list_two: print(item)# 模拟for loop# for loop 的大致原理# a for loop takes an iterator and iterates over it原创 2020-08-09 18:16:09 · 532 阅读 · 0 评论