python-基础笔记5-封包解包使用包

 1. 建立包结构
# subl .     #sublime打开文件夹
# tree        #包 的内部结构
.
├── setup.py    #包启动文件
├── suba
│   ├── aa.py   #该文件包含多个python函数
│   ├── bb.py
│   └── __init__.py   #必须文件
└── subb
    ├── cc.py
    ├── dd.py
    └── __init__.py

#setup.py的内容 (包的简介)
from distutils.core import setup

setup(name='jing',version='1.0',description='jing module',author='zhangxiaojing',py_modules=['suba.aa','suba.bb','subb.cc','subb.dd'])

#suba/aa.py 的内容 
def showaa():
    print 'aa'
 2. 创建包
# pwd
/var/www/python_test/mymoudule
# python setup.py build    #创建包命令
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/suba
copying suba/__init__.py -> build/lib.linux-x86_64-2.7/suba
copying suba/aa.py -> build/lib.linux-x86_64-2.7/suba
copying suba/bb.py -> build/lib.linux-x86_64-2.7/suba
creating build/lib.linux-x86_64-2.7/subb
copying subb/__init__.py -> build/lib.linux-x86_64-2.7/subb
copying subb/cc.py -> build/lib.linux-x86_64-2.7/subb
copying subb/dd.py -> build/lib.linux-x86_64-2.7/subb
# tree  查看包结构
.
├── build
│   └── lib.linux-x86_64-2.7
│       ├── suba
│       │   ├── aa.py
│       │   ├── bb.py
│       │   └── __init__.py
│       └── subb
│           ├── cc.py
│           ├── dd.py
│           └── __init__.py
├── setup.py
├── suba
│   ├── aa.py
│   ├── bb.py
│   └── __init__.py
└── subb
    ├── cc.py
    ├── dd.py
    └── __init__.py
 3. 发布包
# python setup.py sdist  #生成(发布)压缩包
# tree
.
├── build
│   └── lib.linux-x86_64-2.7
│       ├── suba
│       │   ├── aa.py
│       │   ├── bb.py
│       │   └── __init__.py
│       └── subb
│           ├── cc.py
│           ├── dd.py
│           └── __init__.py
├── dist
│   └── jing-1.0.tar.gz   #压缩包文件
├── MANIFEST
├── setup.py
├── suba
│   ├── aa.py
│   ├── bb.py
│   └── __init__.py
└── subb
    ├── cc.py
    ├── dd.py
    └── __init__.py
 4. 使用包
# cp dist/jing-1.0.tar.gz /var/www/python_test/ 
# pwd
# cd /var/www/python_test
# tar zxvf jing-1.0.tar.gz  #解包
# python setup.py install #安装包
# python
>>> from suba import *   #导入使用
>>> suba.aa.showaa()
>>> aa
Python 中进行通信时,需要对数据进行封包解包封包是将数据按照一定的格式打成二进制数据,用于传输;解包则是将接收到的二进制数据还原成原始数据,方便我们进行处理。 Python 中有很多比较方便的库可以帮助我们进行封包解包,比如 `struct` 和 `pickle`。 `struct` 库可以按照指定的格式将数据打成字节序列。常见的格式括整数、浮点数、字符串等。例如: ```python import struct # 将整数和浮点数打成字节序列 data = struct.pack("if", 123, 3.14) print(data) # 输出 b'{\x00\x00\x00\xcd\xcc\x0c@' # 将字节序列解包成整数和浮点数 unpacked_data = struct.unpack("if", data) print(unpacked_data) # 输出 (123, 3.140000104904175) ``` `pickle` 库可以将 Python 对象打成二进制数据,也可以将二进制数据解包Python 对象。例如: ```python import pickle # 将 Python 对象打成二进制数据 data = pickle.dumps({"name": "Alice", "age": 18}) print(data) # 输出 b'\x80\x04\x95\x1b\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05Alice\x94\x8c\x03age\x94K\x12u.' # 将二进制数据解包Python 对象 unpacked_data = pickle.loads(data) print(unpacked_data) # 输出 {'name': 'Alice', 'age': 18} ``` 需要注意的是,这两个库在使用时需要注意数据的类型和格式,否则会出现错误。同时,在进行通信时也需要注意网络字节序的问题,即数据的字节顺序可能会因为不同的机器而不同。常见的解决方法是使用 `htons` 和 `ntohs` 函数进行转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值