随机有用的python工具和其他东西(绝对不是backronym)

rup的Python项目详细描述


鲁比

随机有用的python内容

里面是什么?

我觉得有用的实用工具的集合。

buf

一个bytearray派生类,有许多有用的方法,支持按位操作等等。

>>>buf(10)buf(hex='00000000000000000000')>>>str(buf(b'hello'))'hello'>>>buf([1,2,3,4])buf(hex='01020304')>>>buf(hex="deadbeef")buf(hex='deadbeef')>>>print(buf.random(100).hexdump())#000000| 6568 15de cf7a ce7e  fb66 d9f3 cad4 d144 |eh...z.~.f.....D|#000010| bc0b c4fd 05c0 5fb5  eca1 870c 94e6 5b73 |......_.......[s|#000020| 3a86 322c 0ede de2e  dd4b d1a6 331d 3c1b |:.2,.....K..3.<.|#000030| 6eb2 27c4 3246 1526  56a8 85a6 8c06 2d91 |n.'.2F.&V.....-.|#000040| a8fc 821d f806 a442  93ff 3503 27fe b3dd |.......B..5.'...|#000050| 1a8e 0aef da63 8eba  8d4f 6da5 fd44 8634 |.....c...Om..D.4|#000060| 3a6e 2395                                |:n#.            |>>>b=buf(b"hello")>>>s=b.to_stream()>>>s.seek(0,2)>>>s.write(b" world")>>>print(b)helloworld

也可以使用:hexdump,这会产生很好的hexdump。

bitview

允许在内存中进行位寻址和操作。

>>>b=buf(hex='aa55')>>>print(b.bits)1010101001010101>>>print(b.bits[4:-4])10100101>>>b.bits.invert()>>>bbuf(hex='55aa')>>>b.bits[:8].set()>>>bbuf(hex='ffaa')

fields

一个小型的二进制结构操作库,与buf结构很好地集成在一起,允许像:

>>>b=buf(hex='deadbeef12345678aabb1337')>>>f=b.fields('a: u32  b: u16  c: Bytes[6]')>>>print(hex(f.a),hex(f.b),repr(f.c))0xefbeadde0x3412buf(hex='5678aabb1337')

Range

增强的range();一个行为类似于normal range()但也支持切片、无限范围的类, 数列表示法(例如:Range[1, 2, ..., 100]类似于Range(1, 101))等等。

range与内置range()函数类似,只是它还支持: *子切片 *无限范围 *省略号级数表示法 *距离上的算术运算 *还有更多!

所有这些优点的开销都可以忽略不计,因为range()对实际的 迭代,例如xrange()/range()和itertools.count()。

用法示例:

>>>print(Range(10))Range[0,1,...,9]>>>print(Range(None))Range[0,1,2,...]>>>print(Range(step=-1))Range[0,-1,-2,...]>>>foriinRange[1,2,...,10]:...print(i)12345678910>>>1024inRange[2:32768:2]True>>>foriinRange[1,2,...]:...ifi==2**16:...print("No more!")...breakNomore!>>>print(Range[0,...][2:12:2])Range[2,4,...,10]

Stream

流包,它允许分块迭代以及切片和单字节索引。

>>>s=Stream.open("foo.bin","rb")>>>x=s[10:30]>>>x<StreamSlice[10:30]of'/tmp/bla.bin'>>>>buf(x)buf(hex='63a7349ca38cc6319f3430c72e9659e8aca27705')>>>s[:1000].copy(open('/tmp/bar.bi','wb'))# Write stream data to other stream (buffered)

兼容性

这个包与python版本2.7和3.3+兼容。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归