zoukankan      html  css  js  c++  java
  • python3 pickle & struct

    import pickle

    pickle是用来把python原生的对象存在硬盘里

    >>> print(D)
    {'cisco': 1, 'python': 2, 'ericsson': 3}
    >>> import pickle
    >>> F=open('pickle_test.pkl', 'wb')
    >>> pickle.dump(D,F)
    >>> F.close()
    >>> F=open('pickle_test.pkl','rb')
    >>> E=pickle.load(F)
    >>> E
    {'cisco': 1, 'python': 2, 'ericsson': 3}
    >>> 
    

      用pickle.dump()把字典D这个python对象存储进pickle_test.pkl,该pkl文件是存在硬盘上的

    后面用pickle.load()再把硬盘上的文件打开

     pickle这种方式,只能用来存储python的对象,C语言的对象看不了,可以用XML或者JSON来存储数据,其他语言也是可以看的

    ####################################################

    struck可以用来构造tcp头部

    参考博客:

    https://www.cnblogs.com/gala/archive/2011/09/22/2184801.html

    >: 网络字节序:左侧是高位,右侧是低位

    <: 主机字节序:左侧是低位,右侧是高位

    i: 整数,占4个字节,目的是把7放在4个字节里,即序列号要是7 - i对应的是7

    s: 字符,4s即四个字母,一个字母占一个字节 - 对应的是b'spam'

    h: 整数,两个字节,对应的是8,网络编程里可能对应的是端口号

    b'spam': 二进制的spam

    写入了一共10个字节:4+4+2

    >>> F=open('data.bin','wb')
    >>> import struct
    >>> data=struct.pack('>i4sh',7,b'spam',8)
    >>> data
    b'x00x00x00x07spamx00x08'
    >>> F.write(data)
    10
    >>> F.close()
    >>> F=open('data.bin','rb')
    >>> data=F.read()
    >>> data
    b'x00x00x00x07spamx00x08'
    >>> values = struct.unpack('>i4sh',data)
    >>> values
    (7, b'spam', 8)
    >>> 
    

      这种方法比较原始,比较麻烦,有其他更高级的方法来构造TCP数据包

  • 相关阅读:
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Symmetric Tree
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Triangle
    Populating Next Right Pointers in Each Node II
    Pascal's Triangle II
    Pascal's Triangle
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/vigossr/p/11174366.html
Copyright © 2011-2022 走看看