a) Windows
Abra la página web para descargar la última versión de protobuf-python-3.5.1.zip y protocol-3.5.1-win32.zip .
Después de descomprimir el archivo, copie protocol-3.5.1-win32 \ bin \ protocol.exe a protobuf-3.5.1 \ src, luego ingrese el directorio protobuf-3.5.1 \ python \ y ejecute el comando:
python setup.py build // Genera una gran cantidad
-
instalación de python setup.py
# Instalación protobuf
tar zxvf protobuf-Python-3.5.1.tar.gz
cd protobuf-3.5.1
./configure
la marca
de la marca del Compruebe
la marca instalar
# verificar protoc --version OUT: libprotoc 3 .5.1 # representa el éxito de la instalación de instalación # python protobuf module cd python python setup.py install # Este paso requiere que se instalen los seis módulos antes de que pueda instalarse normalmente
Cree un archivo proto test.proto, que realmente define el tipo de datos, similar a la estructura en c
mensaje CDevice
{
opcional int32 devId = 1 ; nombre de cadena opcional = 2 ; }
El tipo de datos se denomina CDevice, que contiene dos atributos, uno es el ID de dispositivo de tipo int32 devId, y el otro es el nombre del dispositivo de tipo cadena. Ejecute el comando para generar test_pb2.py, que debe importarse al programa de prueba. Si el archivo proto no especifica si generar prot2 o proto3, el valor predeterminado es generar proto2. Ingrese en cmd:
[La ruta para instalar protec.exe] -I = [¡La carpeta donde se encuentra el archivo proto! Tenga en cuenta la ruta de la carpeta] --python_out = [la ruta del archivo que espera generar] [la carpeta donde se encuentra el archivo proto + el nombre del archivo] .proto
protocolo -I =. / --python_out =. / test.proto
Tenga cuidado de no dejar espacios a ambos lados del signo igual
-I es la ruta del archivo proto, --python_out =. / Significa que el .proto especificado genera el archivo * .py de python disponible en la ruta actual
Importación test_pb2
importación las llamadas de rastreo fuera
de importación SYS
# Nota: En el archivo py protobuf llamar a métodos se pueden encontrar, hay serialización y de-serialización. La parte de transmisión de datos se omite en el medio, y los datos se pueden transmitir por rpc, socket u otros métodos después de la serialización.
el intento : el sendData = test_pb2 . la CDevice () el sendData . DevID = 9. el sendData . Nombre = 'USB' sendDataStr = la sendData . SerializeToString () Imprimir ( 'SerializeToString:' , sendDataStr ) receiveDataStr =
sendDataStr
recibenData = test_pb2 . CDevice () recibir datos . ParseFromString ( recibirDataStr ) print ( 'pares serializar cadena, devolver: devId =' , recibirData . DevId , ', nombre =' , recibirData . Nombre ) excepto Excepción , e : imprimir excepción , ':' , e imprimir rastreo de impresión . print_exc () errInfo =
sys . exc_info ()
imprimir errInfo [ 0 ], ':' , errInfo [ 1 ] #输出结果: ( 'SerializeToString:' , '\ x08 \ t \ x12 \ x03USB' ) ( 'Pares serializar cadena, retorno: Devid =' , 9 , ', nombre =' , u'USB ' )