
python
xumesang
一辈子做好一件事
展开
-
hpfeeds操作
原文章地址:点击打开链接正常安装使用hpfeeds的步骤如下git clone https://github.com/rep/hpfeeds/cd hpfeedspython setup.py buildpython setup.py install安装成功后,会出现下面几个文件夹。appsuport:hpfeeds支持的一些蜜罐的应用转载 2016-12-15 16:41:33 · 1525 阅读 · 1 评论 -
Python的hasattr、getattr
1. hasattr用于确定一个对象是否具有某个属性。语法: hasattr(object, name) -> bool判断object中是否有name属性,返回一个布尔值。2. gettattr用于返回一个对象属性,或者方法class A: def __init__(self): self.name = 'zhangjing' #se原创 2016-04-20 10:31:46 · 913 阅读 · 1 评论 -
util文件的作用
经常在程序里见到 Util ,例如,util.py原创 2016-04-18 14:07:43 · 15553 阅读 · 1 评论 -
移位操作
问题:将一个正整数的二进制表示左右移n位解决方法:# right shift 3 bitsaddress = address >> 3# left shift 3 bitsaddress = address原创 2016-04-29 13:32:02 · 382 阅读 · 0 评论 -
chr(), hex()
问题:将一个整数(0,255)转化成16进制字符串解决方法:import randomresp_data += chr((random.randint(0, 255)))原创 2016-04-29 13:26:37 · 474 阅读 · 0 评论 -
Python技巧(二)
1. 替换空格>>> toSend = "FF F9 FF 00 00 FA FF F7 FF F4 FF F6 FF F7 FF F6 FF FD FF 05 00 03 00 06 00 05 00 04 00 06 00 06 00 03 00 FB FF 02 00 0B">>> toSend.replace(' ', '').decode('hex')'\xff\xf9\xff\原创 2016-04-29 13:17:31 · 1373 阅读 · 0 评论 -
virtualenv --创建Python虚拟环境
一 安装pip install virtualenv二 创建虚拟环境virtualenv test_env注意:默认情况下,虚拟环境会依赖环境中的site packages,即系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,可以加上参数"--no-site-packages"三 启动虚拟环境先进入虚拟环境目录:cd原创 2016-04-26 20:05:19 · 432 阅读 · 0 评论 -
Python自带的服务器
原文章:点击打开链接利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:python -m Web服务器模块 [端口号,默认8000]例如:python -m SimpleHTTPServer 8080然后就可以在浏览器中输入http://localhost:端口号/路径来转载 2016-04-26 14:56:40 · 3286 阅读 · 2 评论 -
python语言特性(四)
21. 判断一个文件是否存在>>> import os.path>>> os.path.isfile('find_string.sh')True>>> os.path.isfile('zm')False22.原创 2016-02-26 15:12:01 · 596 阅读 · 0 评论 -
python语言特性(三)
16. super用法super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。17. 单例模式1.使用__new__方法如果想使得某个类从始至终最多只有一个实例,原创 2016-02-25 16:42:17 · 339 阅读 · 0 评论 -
str.format()
目的:格式化一个字符串的输出结果来几个小栗子栗子1:使用'{}'占位符print('I\'m {},{}'.format('Hongten','Welcome to my space!'))结果:I'm Hongten,Welcome to my space!栗子2:使用'{0}','{1}'形式的占位符print('{0},I\'m {1},my E-mail i原创 2016-04-21 10:09:36 · 734 阅读 · 0 评论 -
Python编程技巧(一)
1.unpack_, _, length = unpack('!BBH', data[:4])2.mapself.param_mapping = {0x00: ('diagnostics', self.request_diagnostics),return self.param_mapping[self.param][1]()3.logginglogger.info('HH原创 2016-04-22 13:00:11 · 400 阅读 · 0 评论 -
range与xrange
range()返回一个递增或递减的数字列表,列表的元素值由三个参数决定start表示列表开始的值,默认为“0”。stop 表示列表结束的值,该参数不可缺少参数step表示步长,默认值为“1”。range()返回的是一个递增或递减的数字列表。xrange 是一个类,返回的是一个xrange对象。使用xrange()进行遍历,每次遍历只返回一个值。range()原创 2016-11-23 14:20:17 · 561 阅读 · 0 评论 -
gevent指南
原文章:点击打开链接gevent程序员指南由Gevent社区编写gevent是一个基于libev的并发库。它为各种并发和网络相关的任务提供了整洁的API。介绍本指南假定读者有中级Python水平,但不要求有其它更多的知识,不期待读者有 并发方面的知识。本指南的目标在于给予你需要的工具来开始使用gevent,帮助你 驯服现有的并发问题,并从今开转载 2016-11-22 17:05:06 · 1831 阅读 · 1 评论 -
Python装饰器学习
原文章地址:点击打开链接这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。第一步:最简单的函数,准备附加额外功能12345678# -*- coding:gbk -*-'''示例1: 最简单的函数,表示调用了两次'''转载 2016-11-15 11:39:10 · 438 阅读 · 0 评论 -
python smtp实例
先来个大栗子:# Description: Simple smtp test# Author: xumesang# Date: 2016-11-7import smtplibfrom email.mime.text import MIMETextmailto_list = "xxx@qq.com"mail_host = "smtp.163.com"mail_user = "yy原创 2016-11-07 16:10:00 · 1021 阅读 · 0 评论 -
smtplib模块学习
原文章地址:点击打开链接python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括: HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail from: RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to: DATA 在单个或多个RCPT命转载 2016-11-07 15:18:35 · 4509 阅读 · 0 评论 -
to many values to unpack
现象:Python代码执行后显示“to many values to unpack”原因:错误所在行的函数返回的参数个数大于“=”左边的参数个数解决办法:1. 增加“=”左边参数个数;2. 减少函数返回的参数个数原创 2016-04-22 17:03:46 · 931 阅读 · 0 评论 -
TypeError: object of type 'NoneType' has no len()
源代码:resp_data = None修改后代码:resp_data = ''原因:你肯定懂了!原创 2016-04-22 17:07:48 · 36724 阅读 · 3 评论 -
Python语言特性(一)
1. Python的函数参数传递看两个例子:a = 1def fun(a): a = 2fun(a)print a # 1a = []def fun(a): a.append(1)fun(a)print a # [1]所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。这里记住的是类型是属于对象的,而不是原创 2016-02-24 14:18:24 · 494 阅读 · 0 评论 -
Python语言特性(二)
6. Python中单下划线和双下划线>>> class MyClass():... def __init__(self):... self.__superprivate = "Hello"... self._semiprivate = ", world!"...>>> mc = MyClass()>>> print mc._原创 2016-02-24 17:13:08 · 467 阅读 · 0 评论 -
基本序列和映射规则
>def checkIndex(key): if not isinstance(key, (int, long)): raise TypeError if key<0: raise IndexError class ArithmeticSequence(object): """docstring for ArithmeticSequence""" d转载 2016-01-08 10:49:46 · 1440 阅读 · 0 评论 -
使用super函数
>__metaclass__ = typeclass Bird: def __init__(self): self.hungry = True def eat(self): if self.hungry: print 'Aaaah...' self.hungry = False else: print 'No,thank转载 2016-01-08 10:13:01 · 446 阅读 · 0 评论 -
让python类的方法或特性变成私有
为了让方法或者特性变为私有(从外部无法访问),只要在它们的名字下面加上双下划线:class Secretive: def __inaccessible(self): print 'Best you can't see me...' def accessible(self): print 'The secret message is:'转载 2016-01-07 17:04:58 · 420 阅读 · 0 评论 -
hpfeeds介绍
本文是翻译的git上hpfeeds项目关于 hpfeeds是一个轻量级的、需要认证的、支持任意的二进制载荷的公开协议。推送(feeds)支持任意的二进制载荷,且根据频道划分成不同的种类。这意味着频道的使用者必须决定数据的传输结构,例如,可以选择一个序列化格式。 进入频道需要一个所谓的“授权钥匙”,该钥匙是由一对id和secret决定,发送到服务器的s翻译 2016-01-23 18:48:06 · 1973 阅读 · 0 评论 -
Python使用struct处理二进制
原文章地址:点击打开链接有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize()pack(fmt, v1, v2, ...) 按照给定的格式(fm转载 2016-01-06 14:57:37 · 423 阅读 · 0 评论 -
python入门笔记(3)
yield的使用例一:斐波那契數列def fib(max): n,a,b = 0,0,1 while n<max: print b a,b = b,a+b n +=1def fib_list(max): n,a,b = 0,0,1 list = [] while n<max: list.append(b) a,b = b,原创 2016-01-06 13:37:18 · 524 阅读 · 0 评论 -
python入门笔记(2)
1. strip()方法描述:用于移除字符串头尾指定的字符(默认为空格)。语法:str.strip([chars]);例子: str = "0000000this is string example....wow!!!0000000"; print str.strip( '0' );结果this is string example....wow!!!2.原创 2016-01-05 16:43:51 · 464 阅读 · 0 评论 -
统计sys.stdin中单词数
# word_count.py import systext = sys.stdin.read()words = text.split()word_count = len(words)print 'word_count: ', word_count原创 2016-01-06 10:23:03 · 422 阅读 · 0 评论 -
Python 解析配置模块之ConfigParser详解
import ConfigParsercp = ConfigParser.ConfigParser()cp.read('conpot.cfg')print 'All sections:', cp.sections()print 'common:', cp.options('common')print 'daemon:', cp.options('daemon')print 'mysq原创 2016-01-21 15:56:40 · 722 阅读 · 0 评论 -
生成器方法要点
1.外部作用域可以访问生成器的send方法,参数是给生成器传递的消息;2.使用next方法后,yield返回None;3.在生成器挂起后(即:yield函数第一次被执行后),再使用send方法;4.用yield返回值的表达式要加括号.def repeater(value): while True: new = (yield value) if new is原创 2016-01-08 17:39:08 · 372 阅读 · 0 评论 -
encode decode binascii
原创 2016-01-11 11:08:49 · 335 阅读 · 0 评论 -
Python包管理工具setuptools详解(基础)
原文章:点击打开链接0.什么是setuptoolssetuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。功能亮点:利用EasyInstall自动查找、下载、安装、升级依赖包创建Py转载 2016-01-15 11:00:35 · 4291 阅读 · 0 评论 -
Python包管理工具setuptools详解(进阶)
原文章:点击打开链接4.setuptools进阶在上例中,在前两例中,我们基本都使用setup()的默认参数,这只能写一些简单的egg。一旦我们的project逐渐变大以后,维护起来就有点复杂了,下面是setup()的其他参数,我们可以学习一下使用find_packages()对于简单工程来说,手动增加packages参数很容易,刚刚我们用到了这转载 2016-01-15 11:03:16 · 1021 阅读 · 0 评论 -
PEP8 Python 编码规范整理
原文章地址:点击打开链接一 代码编排1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。二 文档编排1转载 2016-01-14 16:11:10 · 566 阅读 · 0 评论 -
Library bin
A problem script authors often face is the necessity of encoding valuesinto binary data. For example after analyzing a protocol the startingpoint to write a script could be a hex dump, which serves as转载 2016-01-29 12:29:32 · 452 阅读 · 0 评论 -
捕获键盘中断
1. 捕获键盘中断if __name__ == '__main__': try: sys.exit(main()) except KeyboardInterrupt: pass2. 处理终端输入列表def handle_list(arg): if arg: return arg.split(",") else: ret原创 2016-01-29 12:28:06 · 759 阅读 · 0 评论 -
select理解
在python中,select函数是一个对底层操作系统的直接访问的接口。它用来监控sockets、files和pipes,等待IO完成(Waiting for I/O completion)。当有可读、可写或是异常事件产生时,select可以很容易的监控到。 select.select(rlist, wlist, xlist[, timeout])参数:传递三个原创 2016-01-12 13:55:32 · 434 阅读 · 0 评论 -
pip常用操作
安装特定版本的package,通过使用==, >=, , pip install 'Markdownpip install 'Markdown>2.0,升级包到当前最新的版本,可以使用-U 或者 --upgradepip install -U Markdown卸载包pip uninstall Markdown查询包pip search "multip原创 2016-01-12 11:07:09 · 505 阅读 · 0 评论 -
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
解决方法:xx.py文件名时,xx不要是python保留字原创 2016-01-12 11:02:54 · 8826 阅读 · 1 评论