Introducción y entrada de protobuf basado en python

Google Protocol Buffer (Protobuf para abreviar) es el estándar interno de datos de lenguaje mixto de Google Protocol Buffers es un formato de almacenamiento de datos estructurado liviano y eficiente que se puede utilizar para serializar o serializar datos estructurados. Es muy adecuado para el almacenamiento de datos o el formato de intercambio de datos RPC. Se puede utilizar en formatos de datos estructurados serializados extensibles, independientes del lenguaje, independientes de la plataforma y en campos tales como protocolos de comunicación y almacenamiento de datos.

1. Instalar protobuf
Para instalar y usar protobuf en python, la versión de python debe ser> 2.6.

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

b) Linux
Abra la página web para descargar la última versión de protobuf-python-3.5.1.tar.gz , y luego ejecute el siguiente código en el directorio actual:
# 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







2. Prueba

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 ' )     

    



Publicado 10 artículos originales · ganado elogios 0 · Vistas 6266

Supongo que te gusta

Origin blog.csdn.net/u010379248/article/details/80901808
Recomendado
Clasificación