随机有用的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+兼容。