Python
moxiaomomo
虚怀若谷,大爱无疆
展开
-
[VSCode]command 'python.setInterpreter' not found
vscode中的python插件突然出了问题:在Ctrl+Shift+P后选择Python: Select Interpreter, vscode报了错误:command 'python.setInterpreter' not found联想到刚刚在系统中安装了conda, 猜测可能是这个问题造成的。排查后果然是这个原因,解决方法:菜单栏的文件 -> 首选项 -> 设置, 搜索...原创 2020-01-28 23:29:53 · 19019 阅读 · 2 评论 -
【python】zip()方法的一种应用场景
假设有一个集合set, 需要对set中的每个元素指定一个唯一的id,从而组建成一个dict结构。这个场景可以演化成,两个list/set或者一个set与一个list如何创建成为一个字典,如:A = ["a", "b", "c", "d"]B = [1, 2, 3, 4]? ==> C = {"a":1, "b":2, "c":3, "d":4}一个比较快捷的原创 2014-03-25 19:39:37 · 2094 阅读 · 0 评论 -
【python】Python性能鸡汤
阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!" 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你转载 2014-03-21 09:47:45 · 2496 阅读 · 0 评论 -
【python】理解迭代器及yield
虽然很早之前就接触yield这个词了,却一直是一知半解。趁现在有时间,把它研究一通再说。 含有yield的函数说明它是一个生成器,而不是普通的函数。当程序运行到yield这一行时,该函数会返回值,并保存当前域的所有变量状态;等到该函数下一次被调用时,会从上一次中断的地方开始执行,一直遇到下一个yield, 程序返回值, 并在此保存当前状态; 如此反复,直到函数正常执行完成。 我原创 2014-03-30 21:10:47 · 3778 阅读 · 0 评论 -
【python】关于segfault
最近python程序在运行过程中偶尔会引发系统segfault的错误,而且是在不定期不同代码段时发生的,所以单步调试没办法确定是哪一行代码的问题。段错误, 这个现象太离奇了。在系统日志里message中一开始提示为python库的问题,后台有提示过libmysqlclient, 也提示过cjson库引起的。如果真是在特定硬件环境中python或mysql库会出现问题,那有点说不过去。如果是原创 2014-02-10 10:21:07 · 3044 阅读 · 1 评论 -
【python】TCP包发送十六进制数据
举例: 0x12, 0x34可以直接拼成 "\x12\x34"。客户端代码示例:#-*- encoding: utf-8 -*-import jsonimport socketimport sysimport binasciireload(sys)sys.setdefaultencoding('utf-8')if __name__=="__main__":原创 2014-01-05 17:40:42 · 13121 阅读 · 1 评论 -
【python】获取linux主机ip的一种方法
python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来。所以加多了一个条件判断,如果发现以上方法获取ip抛异常时,那就用调起shell命令(ifconfig)和管道,把想要的ip给过滤出来。import socketimport fcntlimp原创 2013-12-16 13:40:55 · 5558 阅读 · 0 评论 -
【python】Resource temporarily unavailable
原本python中多进程程序跑得挺好的,后来加了一部分代码,结果在运行到lock = multiprocessing.Manager().Lock()这一行时报出了如下错误:[0]Exception: [Errno 11] Resource temporarily unavailable在确定没有更改multiprocessing这一模块代码的情况后,初步判定要么是系统出异常了,要原创 2013-12-13 22:12:56 · 10969 阅读 · 0 评论 -
【python】MySQLdb执行sql文件命令
刚使用mysqldump导出某表的数据及结构,保存在xxx.sql中。如果想在python中执行这个文件来重建该表,应该怎样做呢?纠结了半天,最后把sql文件中多余的空行及所有注释去掉,然后这样执行命令就OK了:for line in open('xxx.sql', 'r'): cursor.execute(line)这应该是最简单的顺序执行命令方法了,但需要更改sql文件原创 2013-09-25 08:36:47 · 6968 阅读 · 0 评论 -
【python】多进程锁multiprocess.Lock
同步的方法基本与多线程相同。 1) Lock当多个进程需要访问共享资源的时候,Lock可以用来避免访问的冲突。import multiprocessingimport sysdef worker_with(lock, f): with lock: fs = open(f,"a+") fs.write('Lock acqu转载 2013-09-13 13:48:27 · 36482 阅读 · 2 评论 -
【python】判断值是否在list或set中的对比
判断值是否在set集合中的速度明显要比list快的多, 因为查找set用到了hash,时间在O(1)级别。假设listA有100w个元素,setA=set(listA)即setA为listA转换之后的集合。以下做个简单的对比:for i in xrange(0, 5000000): if i in listA: passfor i in xrange(0,原创 2014-03-21 11:41:34 · 28887 阅读 · 2 评论 -
【Python】logging结合decorator模式实优化日志输出
python内置的loging模块非常简便易用, 很适合程序运行日志的输出。而结合python的装饰器模式,则可实现简明实用的代码。测试代码如下所示: #! /usr/bin/env python2.7# -*- encoding: utf-8 -*-import logginglogging.basicConfig(format='[%(asctime)s] %(mess...原创 2014-04-01 18:13:29 · 3963 阅读 · 4 评论 -
shell curl 与 python requests的一次对比
shell curl 与 python requests偶然发现了curl和requests库的一个区别。场景是这样的–这样使用curl去发起post请求:curl -v -X POST http://api.xx.com/api/yy.php --data 'params={"sign":"xxxx","data":[{"uid":110,"remark":"just4test&q原创 2018-04-19 13:55:01 · 12696 阅读 · 0 评论 -
[python]书籍信息爬虫示例
[python]书籍信息爬虫示例背景说明需要收集一些书籍信息,以豆瓣书籍条目作为源,得到一些有效书籍信息,并保存到本地数据库。获取书籍分类标签具体可参考这个链接: https://book.douban.com/tag/?view=type 然后将这些分类标签链接存到本地某个文件,存储内容如下https://book.douban.com/tag/小说https://bo原创 2018-01-10 14:59:47 · 1409 阅读 · 2 评论 -
[mysql]python3实现并发访问水平切分表
场景说明假设有一个mysql表被水平切分,分散到多个host中,每个host拥有n个切分表。 如果需要并发去访问这些表,快速得到查询结果, 应该怎么做呢? 这里提供一种方案,利用python3的asyncio异步io库及aiomysql异步库去实现这个需求。代码演示import loggingimport randomimport asynciofrom aiomysql import c原创 2017-08-07 12:12:51 · 1778 阅读 · 0 评论 -
python3 pika之连接断开问题
python3 pika库连接断开问题问题描述在消费rabbitMQ队列时, 每次进入回调函数内需要进行一些比较耗时的操作;操作完成后给rabbitMQ server发送ack信号以dequeue本条消息。问题就发生在发送ack操作时, 程序提示链接已被断开或socket error。源码示例#!/usr/bin#coding: utf-8import pikaimport timeUSER原创 2017-08-19 18:44:17 · 13964 阅读 · 7 评论 -
[python]map方法与并行执行
文章也可参考: 我的个人博客1. 内建方法map内建map方法可以通过一个序列的方式来实现函数之间的映射, 并且串行执行。如:import timefrom datetime import datetimedef add(x, y): print(datetime.now(), "enter add func...") time.sleep(2) print(datetim原创 2017-08-10 23:28:01 · 16401 阅读 · 1 评论 -
【python】SSL: CERTIFICATE_VERIFY_FAILED
在使用python的rquests库, 通过https协议get方法访问了某个web服务接口, 结果提示:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:765)大致原因是服务端用了自签名证书或者是客户端无法识别该证书有效性, 以至于报了认证失败的异常。如果确定是可信的域名,最简单的方法是在get方法中不原创 2016-11-04 11:19:18 · 4741 阅读 · 0 评论 -
【python】使用redis pool的一种单例实现方式
为适应多个redis实例共享同一个连接池的场景,原创 2014-05-26 15:28:09 · 13081 阅读 · 2 评论 -
Python 安装路径, dist-packages 和 site-packages 区别
译:dist-packages is a Debian-specific convention that is also present in its derivatives, like Ubuntu. Modules are installed to dist-packages when they come from the Debian package manager into thi转载 2014-06-04 15:09:17 · 15530 阅读 · 0 评论 -
两个Python web框架:Django & Tornado比较
在各种语言平台中,python涌现的web框架恐怕是最多的;猜想原因应该是在py中构造框架十分简单,使得轮子不断被发明。这里记述一下我了解过的两个py web框架,供大家参考,希望能起他山之石的作用。DjangoDjango 应该是最出名的py框架,Google App Engine甚至Erlang都有框架受它影响。D转载 2014-05-21 00:18:34 · 8968 阅读 · 0 评论 -
【python】RuntimeError: Lock objects should only be shared between processes through inheritance
在使用multiprocessing模块时,使用了同步锁Lock,结果出现了如下错误:RuntimeError: Lock objects should only be shared between processes through inheritance我本来是这样用的:lock = multiprocessing.Lock()pool = multiprocessing.P原创 2013-09-09 10:15:50 · 7700 阅读 · 4 评论 -
【python】按行切分文本文件
python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量。比如按行切分文件并返回切分后得到的文件列表,可以利用内建的split命令进行切分。为了返回得到的文件列表名,可以先将文件切分到自建的子目录中,然后通过os.listdir获取所有文件,再将这些文件移到上一级目录(即函数参数指定的新目录),删除自建子目录,最后返回该文件名列表。代码如下,如发现问题欢迎指原创 2013-09-01 18:42:10 · 8062 阅读 · 0 评论 -
【python】用asq实现count(distinct cln)
假设一个表有6个字段c1,c2,c3,c4,c5,c6,有如下的sql语句:select c1,count(distinct(c6)) from tbl where c3>1 group by c3;python中asq模块可以实现类似的查询,以下用一个示例说明。#!/usr/bin/env python2.7#-*- encoding: utf-8 -*-import osf原创 2013-05-25 10:47:33 · 2139 阅读 · 0 评论 -
【python】关于range()与xrange()
据说range比xrange开销要大,原因是range会直接生成一个list对象,而xrange每次调用返回其中的一个值;参考:http://yushunzhi.iteye.com/blog/207850。于是好奇做了个小小的测试,比较两个函数性能到底有多大差别。(1)测试代码#!/usr/bin/env pythonfrom datetime import *def tes原创 2013-05-22 19:50:16 · 2226 阅读 · 0 评论 -
【python】asq中group_by用法
A. 原生sql语句与asq语句对比假设有这样一个sql查询语句:select id,ip,ch,date from tbl group by ch,date;如要使用python的asq模块的group_by方法,则可以这样实现:(1)通过sql查询所有记录得出res_list;(2)然后使用asq功能: query(res_list).gro原创 2013-05-06 21:23:51 · 3642 阅读 · 0 评论 -
【python】asq-queryable(1)
原文链接:http://docs.asq.googlecode.com/hg/1.0/html/reference/queryables.html译文:asq.queryables提供查询接口的类集.asq.queryables.Queryableclass asq.queryables.Queryable(iterable)在可迭代对象的查翻译 2013-05-05 21:58:39 · 1414 阅读 · 0 评论 -
【python】asq模块-selector
原文连接:http://docs.asq.googlecode.com/hg/1.0/html/reference/selectors.html#selectors(首次翻译,水平不咋地,见笑见笑)译文:asq.selectors(选择器)关于selector函数.之所以叫选择器,是因为它们用于从一个元素中选取某个值. 被选取的值通常是一个属性或子元素,但也可以翻译 2013-05-05 15:53:05 · 2116 阅读 · 0 评论 -
Socket之shutdown()用法
通常来说,socket是双向的,即数据是双向通信的。但有些时候,你会想在socket上实现单向的socket,即数据往一个方向传输。单向的socket便称为半开放Socket。要实现半开放式,需要用到shutdown()函数。一般来说,半开放socket适用于以下场合:(1)当你想要确保所有写好的数据已经发送成功时。如果在发送数据的过程中,网络意外断开或者出现异常,系统不一定会原创 2012-08-23 01:09:44 · 39466 阅读 · 3 评论 -
域名系统(DNS)反向查询
首先我们要明白,对于一个IP地址,很有可能不存在反向的映射。而事实上很多IP地址就没有对应的域名。在Internet标准中有定义反向DNS,和DNS自身一样是一个可选特性。因此,我们必须要为每一次反向查询的行为作异常捕获和处理socket.herror()。下面是一个简单的例子,主要工作是根据IP地址返回相应的域名,代码如下:import sys, sockettry:原创 2012-08-22 01:13:41 · 8047 阅读 · 0 评论 -
python与域名系统(DNS)正向查询
域名系统(DNS)是一个分布式的数据库,主要是用来把主机名换成IP地址。DNS存在有两大理由:(1)可以使用户方便记住名字,而不是纯粹的IP地址;(2)允许服务器改变IP地址,但可以使用原来的域名。系统中最基本的查询为正向查询,它会根据一个主机名来查找IP地址。例如如果你想从www.example.com上下载一个web页面,首先要寻找到IP地址。正想查询会帮你完成这个任务,它会把原创 2012-08-19 22:22:02 · 2532 阅读 · 0 评论 -
我的第一个python之socket通信程序
刚刚开始接触python,实现了一个helloworld程序---关于udp协议的socket通信demo。首先服务端这边的实现如下:import socket, tracebackhost = '' # Bind to all interfaces port = 51500# Step1: 创建socket对象s = socket.socket(socket.AF_INET,原创 2012-08-19 11:30:12 · 8417 阅读 · 0 评论 -
【python】python redis的安装与使用
#1、安装 好吧,我承认我只会最简单的安装 sudo apt-get install redis-server python 支持包: (其实就一个文件,搞过来就能用) sudo apt-get install python-redis #2、配置 配置一下吧,默认配置文件在: “/etc/redis/redis.conf” 绑定ip: “bind 127.转载 2013-05-23 14:43:59 · 9101 阅读 · 0 评论 -
【python】Python open读写文件
1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。open读写文件" title="Python open读写文件" style="margin:0px; padding:0px; border:0px; list-style:none">file_object = open('thefile.txt转载 2013-05-29 11:14:31 · 1167 阅读 · 0 评论 -
【python】对文件操作flush的一个理解
一般的文件流操作都包含缓冲机制,write方法并不直接将数据写入文件,而是先写入内存中特定的缓冲区。flush方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区。正常情况下缓冲区满时,操作系统会自动将缓冲数据写入到文件中。至于close方法,原理是内部先调用flush方法来刷新缓冲区,再执行关闭操作,这样即使缓冲区数据未满也能保证数据的完整性。如果进程意外退出或原创 2013-05-29 23:09:33 · 24434 阅读 · 1 评论 -
【python】 动态加载模块和类
1,使用系统函数import()stringmodule = __import__('string')2,使用imp 模块import impstringmodule = imp.loadmodule('string',*imp.findmodule('string'))3,使用execimportstring = "import string as stringm转载 2013-09-01 00:48:03 · 1621 阅读 · 0 评论 -
【python】利用sftp及rsa密匙实现远程拷贝文件
如果两台服务器之间使用了RSA秘钥免密码登录的方式,可以先查找出rsa秘钥的对应目录(如find / -name id_rsa 或者locate id_rsa),接着通过python中paramiko模块可以这样实现scp功能:def scp_by_key(host_ip, host_port, remote_path, local_path, username, pkey_path):原创 2013-08-17 00:32:06 · 5232 阅读 · 0 评论 -
【python】python paramiko模块安装和使用
简介大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助转载 2013-08-16 16:32:05 · 4301 阅读 · 0 评论 -
【python】ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)
1.问题描述:一个在Django框架下使用Python编写的定时更新项目,在Windows系统下测试无误,在Linux系统下测试,报如下错误:ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)2.原因分析:字符问题。在Windows系统转Linux系统时,字符问题很容易出现。3.解决办法:转载 2013-08-14 23:03:20 · 7585 阅读 · 0 评论 -
【python】使用cjson的编码问题
cjson库相对于python自带的json库,效率会高一些。两者用法也都相对简单。对于json, 可直接使用json.loads(str)来将json字符串转为json对象。而对于cjson,则可以使用cjson.decode(str)来将字符串转为json对象。不过使用cjson时要特别注意编码的问题,不注意就会出现中文乱码的问题。例如str是一种非Unicode的普通含中文的js原创 2013-08-06 13:45:50 · 7927 阅读 · 0 评论