
python
文章平均质量分 63
太阳的味道
活泼开朗、适应力强、认真负责、吃苦耐劳,有良好的学习、沟通、协调能力,具备良好的团队合作精神,对工作积极严谨。平时爱好户外运动,喜欢打羽毛球。
展开
-
[python] utf8 bom编码处理
utf8 bom编码处理decode字符传乱码: 原因是从Facebook下载的csv文件是utf8 bom编码的, 直接decode(‘utf-8’)会出现’\ufeff’; 应该decode(‘utf-8-sig’)原本以为是文件内容导致的问题,debug之后,发现文件开头有’\ufeff’; 不知道这个是什么东西,墨迹了一会儿之后,尝试Google了才有答案;豁然开朗了data_str = file.read().decode('utf-8-sig')datas = data_str原创 2021-05-18 17:12:30 · 653 阅读 · 0 评论 -
[python] python3 flask解析多选框的值
python3 flask解析多选框的值结论ImmutableMultiDict 使用getlist 取多个相同key的值from werkzeug.datastructures import ImmutableMultiDictd = ImmutableMultiDict([('comment', 'test'), ('wp_ids', '2233'), ('wp_ids', '2341')])print(d['wp_ids'])print(d.get('wp_ids'))print(原创 2021-05-18 17:11:59 · 787 阅读 · 0 评论 -
[Superset] 二次开发 根据APP控制权限
Superset 二次开发 根据APP控制权限一、背景数据是区分应用维度的,想要控制用户对应用数据的访问权限综上,需要二次开发,实现基于数据内容的权限控制二、Version系统:Ubuntupython版本:3.6superset版本: apache-superset==0.36.0conda 虚拟环境三、实现1. 思路实现该功能的最终目的就是只返回用户有权限的应用的数据,没有权限的不返回Google之后没有发现superset支持类似的功能,或者说在superset的设计原创 2021-05-18 16:45:05 · 977 阅读 · 1 评论 -
[Superset]修改FilterBox源码,实现下拉框别名
[Superset]修改FilterBox源码,实现下拉框别名name一、背景superset提高的filterbox 下拉框选择,不支持别名的形式;即value和name都是一个值,在配置filterbox的时候选择; 并没有提高别名的功能;要实现别名,只能自己二次开发了;二、开发测试环境conda 安装环境,因为之前已经有装好的环境;此处直接导出环境配置文件,然后安装;开发# 环境源机器conda activate supersetconda env export > envir原创 2021-05-18 16:41:07 · 1630 阅读 · 1 评论 -
[Superset]自定义视图,实现写的操作
Superset 自定义视图,实现写一、背景superset数据展现很友好,所以最初选择了这个框架后期需要实现内容配置,即控制台实现写库的操作综上,需要自定义视图,集成superset实现写的操作二、Version系统:Ubuntupython版本:3.6superset版本: apache-superset==0.36.0conda 虚拟环境三、Installationconda 安装# 安装minicondawget https://repo.anaconda.原创 2021-05-18 16:27:47 · 861 阅读 · 2 评论 -
[python语法] 高级特性
[python语法] python高级特性文章目录[python语法] python高级特性一、切片二、迭代三、列表生成式四、生成器五、迭代器一、切片切片的正常用法不再赘述,除了正常的切片功能,还可以在切片的基础上每个N个元素取一个;以下是每隔2个元素取一个l = range(10)for i in l[::2]: print(i) 02468二、迭代用for遍历list、tuple等可遍历对象,这种遍历就叫做迭代在Python中,迭代是通过for原创 2020-09-25 10:21:36 · 174 阅读 · 0 评论 -
[python语法] 内存分配、id函数使用
python内存分配、id()函数的使用文章目录python内存分配、id()函数的使用1. id函数的使用2. 为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,字符串对象等,python采取重用对象内存的办法3. list类型浅拷贝时,内存地址一样;深拷贝时,内存地址发生了变化4. 内存的分配1. id函数的使用id()函数可返回对象的内存地址python中会为每个对象分配内存,哪怕他们的值完全相等。id(object)函数是返回对象object在其生命周期内位于内存中的地原创 2020-09-22 15:19:34 · 831 阅读 · 0 评论 -
[Python语法] 装饰器
Python装饰器文章目录Python装饰器一、不接受参数的装饰器装饰器的例子:讨论二、接受参数的装饰器装饰器的例子:讨论结语一、不接受参数的装饰器装饰器的例子:import timefrom functools import wrapsdef timethis(func): ''' Decorator that reports the execution time. ''' @wraps(func) def wrapper(*args, **kwarg原创 2020-09-22 12:19:40 · 146 阅读 · 0 评论 -
[Python语法] args kwargs使用
*args **kwargs使用文章目录*args **kwargs使用写法用途标准参数与`*args、**kwargs`在使用时的顺序写法其实并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的. 你也可以写成*var 和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定用途主要将不定量的参数传递给函数,即当不确定函数有多少个参数的时候使用*args 是用来发送一个非键值对的可变数量的参数列表给一个函数.**kwargs 允许原创 2020-09-22 12:15:51 · 114 阅读 · 0 评论 -
[python异步 第五篇 ] python3 异步框架选择
备选: sanic、tornado、flaskflask暂时不支持异步,被淘汰sanic 、tornado对比tornadosanic支持的python版本3.X3.6+异步的底层实现asyncio(可以使用uvloop)uvlooprps较差较优文档完善较少更新差不多差不多uwsgi支持不支持综上,基于sanic目前还太新、文档还不完善且tornado可以使用uvloop事件循环,决定采用tornado6原创 2020-06-30 10:05:38 · 329 阅读 · 0 评论 -
[python异步 第四篇 ] python3 异步库
python异步库asyncio、uvloopasyncio 是Python 标准库里的一个异步 I/O 框架。uvloop : 是 asyncio 默认事件循环的一个代替品,实现的功能完整,且即插即用。uvloop 是用 Cython 写的,建于 libuv 之上。uvloop 可以使 asyncio 更快。事实上,它至少比 nodejs、gevent 和其他 Python 异步框架要快 两倍 。基于 uvloop 的 asyncio 的速度几乎接近了 Go 程序的速度。在你的 asyncio 代原创 2020-06-30 10:04:14 · 667 阅读 · 0 评论 -
[python异步 第三篇 ] python事件循环库的发展历史
Python的异步IO异步IO的优势显而易见,各种语言都通过实现这个机制来提高自身的效率,Python也不例外。一、Python 2的异步IO库Python 2 时代官方并没有异步IO的支持,但是有几个第三方库通过事件或事件循环(Event Loop)实现了异步IO,它们是:twisted: 是事件驱动的网络库gevent: greenlet + libevent(后来是libev或libuv)。通过协程(greenlet)和事件循环库(libev,libuv)实现的gevent使用很广泛。to原创 2020-06-30 10:00:44 · 373 阅读 · 0 评论 -
[python异步 第二篇 ] Linux 异步网络库libevent、libev、libuv对比
[python异步] Linux 异步网络库libevent、libev、libuv对比一、概念:事件、事件循环二、对比三个库:三、在github上的影响力:四、事件种类五、可移植性六、异步架构程序设计原则一、概念:事件、事件循环Libevent、libev、libuv三个网络库,都是c语言实现的异步事件库Asynchronousevent library。异步事件库本质上是提供异步事件通知(Asynchronous Event Notification,AEN)的。异步事件通知机制就是根据发生的事件原创 2020-06-30 09:56:09 · 1735 阅读 · 0 评论 -
[python异步 第一篇 ] Linux 多路复用IO模型 Select,Poll,Epoll 对比
文章目录一、细谈 io 多路复用技术 select 和pollSelect介绍Poll介绍Select、Poll 的缺点Select、Poll 的轮询过程二、细谈事件驱动--EpollEpoll提供了三个函数:Epoll解决的问题:总结操作系统在处理io的时候,主要有两个阶段:等待数据传到io设备io设备将数据复制到user space我们一般将上述过程简化理解为:等到数据传到kernel内核spacekernel内核区域将数据复制到user space(理解为进程或者线程的缓冲区)而原创 2020-06-30 09:44:02 · 373 阅读 · 0 评论 -
Python3中的bytes和str
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。unicode、str、bytes的关系硬盘中一般编码都是uft-8,而在内存中采用unicode编码方式。python中的str其实显示的就是...原创 2020-03-17 11:22:37 · 305 阅读 · 1 评论 -
在flask中使用jsonify和json.dumps的区别
flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢?想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。但作为开发人员,我们需要弄清楚开发过程中各种实现方式的特点和区别,这样在我们面对不同的需求时才能做出相对合理的选择,而...转载 2020-03-09 16:40:55 · 875 阅读 · 0 评论 -
[python] python 编码ASCII、Unicode、utf-8
python 编码ASCII、Unicode、utf-81. python2中我们看到的字符串#当前系统的默认编码为utf-8In [39]: locale.getdefaultlocale()Out[39]: ('en_US', 'UTF-8') In [25]: teststr = '联通'#在内存中是以utf-8编码存在的In [26]: teststrOut[2...原创 2019-12-27 19:19:32 · 785 阅读 · 0 评论 -
[python 2] 永久地将默认编码设置为utf-8
python2.7 永久地将默认编码设置为utf-8网上推荐了两种方法第一个方法<不推荐>: 编辑site.py, 修改setencoding()函数, 强制设置为 utf-8第二个方法<推荐>: 增加一个名为 sitecustomize.py, 推荐存放的路径为 site-packages 目录下sitecustomize.py 是在 site.py 被impo...原创 2019-12-27 19:16:03 · 1308 阅读 · 0 评论 -
[python环境安装] Anaconda克隆安装
Anaconda克隆安装已安装好的环境mkdir /etc/condacd /etc/conda/# 安装minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh # source 环境变量sour...原创 2019-12-10 17:13:04 · 258 阅读 · 0 评论 -
[python环境安装] Anaconda安装
Ubuntu Anaconda安装一、什么是Anaconda?二、Anaconda的适用平台及安装条件三、Anaconda 安装及使用1. 下载安装2. 查看conda 版本3. 更新conda4. 查看conda帮助5. 新建虚拟环境6. 切换conda环境7. 退出虚拟环境8. 显示安装过的所有虚拟环境9. 复制环境10. 删除环境11. 包管理12. 如果conda安装不上的包,或者没有的包...原创 2019-12-10 17:11:15 · 278 阅读 · 0 评论 -
Python中threading模块的join函数
Join的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这些线程结束,例如: for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start(转载 2014-05-08 16:11:35 · 988 阅读 · 0 评论 -
Hadoop Streaming 实战: 多路输出
streaming把reduce的输出作为一个任务的最终输出,输出文件形如: part-00000、part-00001…… 文件个数为reduce任务个数 但是,有的时候,我们有多路输出的需求,eg:一部分数据作为下一个mapreduce任务的输入,另一部分数据直接供下游任务抓取,此时,我们就需要使用reduce的多路输出。在hadoop-v2-u转载 2013-07-31 16:54:04 · 1087 阅读 · 0 评论 -
linux 同时安装python2 python3, 及pip 的安装使用
linux 同时安装python2 python3, 及pip 的安装使用1. python 的安装:2. pip 的安装:3. python包安装:1. python 的安装:由于ubuntu系统自带python2.7(默认)和python3.4,所以不需要自己安装python。可以使用python -V和python3 -V查看已安装python版本。2. pip 的安装:在...原创 2019-08-20 16:56:48 · 1909 阅读 · 1 评论 -
python中的除法
首先要说的是python中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法。当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会对结果进行截取,取运算的整数部分,比如2/3的运算结果是0;如果x和y中有一个是浮点数,那么会进行所谓的true除法,比如2.0/3的结果是 0.66666666666666663。另外一种除法是采用x//y的转载 2013-08-16 16:32:23 · 918 阅读 · 0 评论 -
python threading获取线程函数返回值
最近需要用python写一个环境搭建工具,多线程并行对环境各个部分执行一些操作,并最终知道这些并行执行的操作是否都执行成功了,也就是判断这些操作函数的返回值是否为0。但是threading并没有显式的提供获取各个线程函数返回值的方法,只好自己动手,下面就介绍一下自己的实现方式。一开始考虑到执行的操作可能有很多,而且后续会不断补充,因此先写了一个通用的多线程执行类,封装线程操作的基本方法,如转载 2013-08-16 16:29:39 · 4764 阅读 · 1 评论 -
【Python】UnboundLocalError: local variable 'l' referenced before assignment
01在程序中设置的sum_Logical属于全局变量,而在函数calculate中没有sum_Logical的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEERROR或者Unbound-LocalError,这取决于python版本转载 2013-08-16 16:25:21 · 903 阅读 · 0 评论 -
python 字典操作
假设字典为dics = {0:'a', 1:'b', 'c':3}1.从字典中取值,当键不存在时不想处理异常[方法] dics.get('key', 'not found')[例如] [解释] 当键'key'不存在是,打印'not found'(即想要处理的信息),当存在是输出键值。【其他解决方案一】if key转载 2013-08-07 18:25:07 · 771 阅读 · 0 评论 -
Python格式化中如何使用%运算符详解
在python中你也许会遇到过python格式化的相关实际应用的内容,而在python格式化中你是否对其的实际应用步骤或是对其的代码有不解之处,如果存在相关的问题,你就可以浏览下面得文章。在python中也有类似于c中的printf()的格式输出标记。在python格式化使用的是%运算符,通用的形式为格式标记字符串 % 要输出的值组 其中,左边部分的”格式标记字符串“可以完全和c中转载 2013-07-24 15:21:42 · 1260 阅读 · 0 评论 -
关于网页点击热区图
当我们使用 JavaScript 记录下用户鼠标的点击行为数据后,怎么把它呈现出来呢?最简单的做法,是直接把鼠标点击的位置在图上标出来,比如像下图这样:(图1)上图的每一个小叉代表一次点击(为简单起见,这儿所有的小叉都是一种颜色,事实上,可以用不同的颜色来表示不同类型的点击,比如点在超链接上的小叉画成红色,点在非超链接上的小叉画成蓝色),从图上可以大致看出来页面转载 2013-07-23 17:35:39 · 6205 阅读 · 0 评论 -
python 解析xml
一.XML的读取.在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容。在缺省情况下都是用XML格式保存的。下面我讲述一下,如何使用minidom来读取和保存XML文件。下面是片段分类的一个示例文件--catalog.xml 4 Python 测试转载 2013-05-13 17:20:18 · 1295 阅读 · 0 评论 -
python find 遇到的问题
python find>>> str = '123456'>>> str.find('1')0>>> str.find('98')-1>>> str.find('') 0当find的字符为空时,直接返回0原创 2013-09-12 14:55:59 · 1129 阅读 · 0 评论 -
python list 操作
list操作:快速创建list、新增item、删除item、重新赋值item、颠倒item顺序、检索item快捷创建list,两种方式:split方法、list函数和range函数配合使用。 split方法。写一个字符串,字符之间以空格分隔,然后对该字符串使用split方法。a_list = 'a b c d e f g'.spit() //创建列表['a','b','c'转载 2013-10-22 14:28:48 · 653 阅读 · 0 评论 -
python将常量集中在一个文件中、常量类的实现、sys.modules的使用
将常量集中在一个文件里、常量类的实现、sys.modules的使用常量类实现sys.modules的使用通过命名风格来提醒使用者该变量代表的意义为常量,如常量名所有字母大写,用下划线连接各个单词常量类实现通过自定义的类实现常量功能。在类中限制”命名全部为大写“和”值一旦绑定便不可再修改“这两个条件。下面是一种较为常见的解决办法,它通过对常量对应的值进行修改时或者命名不符合规范时抛出异常来满足...原创 2019-08-23 17:16:45 · 3004 阅读 · 0 评论 -
python 抓取google play 各搜索词排名
背景:做app推广的时候需要看各 搜索词搜到的各app的排名需要的结果:在https://play.google.com/apps 中搜索某关键词,如browser抓取页面返回的所有app,并保存对应的位置即排名主要实现是用httplib2 抓取页面,用lxml解析页面。import base import httplib2 import lxmlim原创 2015-09-10 15:22:23 · 3280 阅读 · 0 评论 -
Python 中__init__.py的使用(通过包调用方法)
从开始学习python到现在,至少到昨天遇到那个问题为止,只知道__init__.py文件是用来做一些初始化的工作的,但是具体可以做哪些东西却一无所知。先看看下面的代码吧。 程序包结构[c-sharp] view plaincopy项目最外层包: /home/admin/ 对应项目包(/home/admin/)下有如下文件和目录转载 2015-01-05 15:49:49 · 1505 阅读 · 0 评论 -
threading.Thread.setDaemon()方法
例: for i in range(num_threads): worker = Thread(target=pinger, args=(i, queue)) worker.setDaemon(True) worker.start() 官档上是这样解释的: se转载 2014-05-08 16:00:47 · 3168 阅读 · 0 评论 -
Python指南——类
译者:至此Python指南的正文部分就全部译完了,感谢Clover姐姐、Sickkid、尹伟铭、面面、珂珂等朋友在翻译过程中给我提供的帮助和支持。特别感谢Python指南2.2版(http://python.cn/contents/python_tutorial/python-tutorial.html)的作者李东风。在最后这一章的翻译中,术语等内容参照他的译本进行了修订和统一,极大的提高了工作效转载 2014-02-08 17:22:15 · 709 阅读 · 0 评论 -
python list 去重
利用set或者字典key 不会重复的特性。比较容易记忆的是用内置的setl1 = ['b','c','d','b','c','a','a']l2 = list(set(l1))print l2 还有一种据说速度更快的,没测试过两者的速度差别l1 = ['b','c','d','b','c','a','a']l2 = {}.fromkeys(l1).keys()p转载 2013-10-22 14:56:53 · 810 阅读 · 0 评论 -
UnicodeDecodeError: 'utf8' codec can't decode bytes 
▼编码问题真的是个很常见且困扰的问题:原文是ansi编码,(windows下默认编码),换到linux下工作,需要转为utf8编码,文件多所以写了个小程序,其中执行到这:outfile.write(line.encode('utf-8')),会报错:UnicodeDecodeError: 'utf8' codec can't decode bytes in positi转载 2013-05-03 14:20:54 · 1644 阅读 · 0 评论